mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-07 11:58:08 +02:00
device-manager: dont pass terminal as renderer device
Various bits of fall back code pass the terminal device as the renderer device. This is wrong, ply_renderer is a graphical renderer abstraction. This commit passes NULL in those cases, so each renderer does what it's configured to do by default.
This commit is contained in:
parent
a8e238c3c6
commit
266d954b7a
1 changed files with 26 additions and 12 deletions
|
|
@ -665,7 +665,8 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
ply_renderer_t *renderer = NULL;
|
||||
ply_keyboard_t *keyboard = NULL;
|
||||
|
||||
renderer = ply_hashtable_lookup (manager->renderers, (void *) device_path);
|
||||
if (device_path != NULL)
|
||||
renderer = ply_hashtable_lookup (manager->renderers, (void *) device_path);
|
||||
|
||||
if (renderer != NULL) {
|
||||
ply_trace ("ignoring device %s since it's already managed", device_path);
|
||||
|
|
@ -676,9 +677,10 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
device_path ? : "", renderer_type, terminal ? ply_terminal_get_name (terminal) : "none");
|
||||
|
||||
if (renderer_type != PLY_RENDERER_TYPE_NONE) {
|
||||
ply_renderer_t *old_renderer = NULL;
|
||||
renderer = ply_renderer_new (renderer_type, device_path, terminal);
|
||||
|
||||
if (!ply_renderer_open (renderer)) {
|
||||
if (renderer != NULL && !ply_renderer_open (renderer)) {
|
||||
ply_trace ("could not open renderer for %s", device_path);
|
||||
ply_renderer_free (renderer);
|
||||
renderer = NULL;
|
||||
|
|
@ -686,6 +688,18 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
if (renderer_type != PLY_RENDERER_TYPE_AUTO)
|
||||
return;
|
||||
}
|
||||
|
||||
old_renderer = ply_hashtable_lookup (manager->renderers,
|
||||
(void *) ply_renderer_get_device_name (renderer));
|
||||
|
||||
if (old_renderer != NULL) {
|
||||
ply_trace ("ignoring device %s since it's alerady managed",
|
||||
ply_renderer_get_device_name (renderer));
|
||||
ply_renderer_free (renderer);
|
||||
|
||||
renderer = NULL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (renderer != NULL) {
|
||||
|
|
@ -696,7 +710,7 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
manager->keyboard_added_handler (manager->event_handler_data, keyboard);
|
||||
|
||||
create_pixel_displays_for_renderer (manager, renderer);
|
||||
ply_hashtable_insert (manager->renderers, strdup (device_path), renderer);
|
||||
ply_hashtable_insert (manager->renderers, strdup (ply_renderer_get_device_name (renderer)), renderer);
|
||||
create_pixel_displays_for_renderer (manager, renderer);
|
||||
|
||||
if (manager->renderers_activated) {
|
||||
|
|
@ -731,13 +745,13 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
|
||||
static void
|
||||
create_devices_for_terminal (const char *device_path,
|
||||
ply_terminal_t *terminal,
|
||||
ply_device_manager_t *manager)
|
||||
ply_terminal_t *terminal,
|
||||
ply_device_manager_t *manager)
|
||||
{
|
||||
create_devices_for_terminal_and_renderer_type (manager,
|
||||
device_path,
|
||||
terminal,
|
||||
PLY_RENDERER_TYPE_NONE);
|
||||
NULL,
|
||||
terminal,
|
||||
PLY_RENDERER_TYPE_NONE);
|
||||
}
|
||||
static bool
|
||||
create_devices_from_terminals (ply_device_manager_t *manager)
|
||||
|
|
@ -783,9 +797,9 @@ create_devices_from_udev (ply_device_manager_t *manager)
|
|||
|
||||
ply_trace ("Creating non-graphical devices, since there's no suitable graphics hardware");
|
||||
create_devices_for_terminal_and_renderer_type (manager,
|
||||
ply_terminal_get_name (manager->local_console_terminal),
|
||||
manager->local_console_terminal,
|
||||
PLY_RENDERER_TYPE_NONE);
|
||||
NULL,
|
||||
manager->local_console_terminal,
|
||||
PLY_RENDERER_TYPE_NONE);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -793,7 +807,7 @@ static void
|
|||
create_fallback_devices (ply_device_manager_t *manager)
|
||||
{
|
||||
create_devices_for_terminal_and_renderer_type (manager,
|
||||
ply_terminal_get_name (manager->local_console_terminal),
|
||||
NULL,
|
||||
manager->local_console_terminal,
|
||||
PLY_RENDERER_TYPE_AUTO);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue