mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-08 12:28:12 +02:00
device-manager: activate new renderers after adding to renderers list
When a new renderer gets created, we should activate it, if the device manager is already active. At the moment we call create_pixel_displays_for_renderer which would implicitly activate it (from a callback), except we call it one line too early, so the renderer isn't in the list of known renderers yet. This commit swaps the two lines and also adds an explicit renderer activation for clarity. For symmetry it makes the same change to keyboards that it makes to renderers.
This commit is contained in:
parent
2c482f2350
commit
29e2763769
1 changed files with 18 additions and 1 deletions
|
|
@ -71,6 +71,8 @@ struct _ply_device_manager
|
|||
uint32_t local_console_managed : 1;
|
||||
uint32_t local_console_is_text : 1;
|
||||
uint32_t serial_consoles_detected : 1;
|
||||
uint32_t renderers_activated : 1;
|
||||
uint32_t keyboards_activated : 1;
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
@ -682,6 +684,12 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
|
||||
create_pixel_displays_for_renderer (manager, renderer);
|
||||
ply_hashtable_insert (manager->renderers, strdup (device_path), renderer);
|
||||
create_pixel_displays_for_renderer (manager, renderer);
|
||||
|
||||
if (manager->renderers_activated) {
|
||||
ply_trace ("activating renderer");
|
||||
ply_renderer_activate (renderer);
|
||||
}
|
||||
} else if (terminal != NULL) {
|
||||
keyboard = ply_keyboard_new_for_terminal (terminal);
|
||||
ply_list_append_data (manager->keyboards, keyboard);
|
||||
|
|
@ -699,7 +707,8 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
|
|||
}
|
||||
}
|
||||
|
||||
if (keyboard != NULL) {
|
||||
if (keyboard != NULL && manager->keyboards_activated) {
|
||||
ply_trace ("activating keyboards");
|
||||
ply_keyboard_watch_for_input (keyboard);
|
||||
}
|
||||
}
|
||||
|
|
@ -865,6 +874,8 @@ ply_device_manager_activate_renderers (ply_device_manager_t *manager)
|
|||
(ply_hashtable_foreach_func_t *)
|
||||
activate_renderer,
|
||||
manager);
|
||||
|
||||
manager->renderers_activated = true;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -882,6 +893,8 @@ ply_device_manager_deactivate_renderers (ply_device_manager_t *manager)
|
|||
(ply_hashtable_foreach_func_t *)
|
||||
deactivate_renderer,
|
||||
manager);
|
||||
|
||||
manager->renderers_activated = false;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -902,6 +915,8 @@ ply_device_manager_activate_keyboards (ply_device_manager_t *manager)
|
|||
|
||||
node = next_node;
|
||||
}
|
||||
|
||||
manager->keyboards_activated = true;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -922,4 +937,6 @@ ply_device_manager_deactivate_keyboards (ply_device_manager_t *manager)
|
|||
|
||||
node = next_node;
|
||||
}
|
||||
|
||||
manager->keyboards_activated = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue