mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-08 20:38:11 +02:00
device-manager: free keyboards when deactivating a renderer
Based on an original patch by Gert van de Kraats, on Ubuntu Launchpad bug: https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292 Signed-off-by: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
This commit is contained in:
parent
b082f42494
commit
c46f446fe4
1 changed files with 29 additions and 0 deletions
|
|
@ -136,6 +136,34 @@ free_displays_for_renderer (ply_device_manager_t *manager,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
free_keyboards_for_renderer (ply_device_manager_t *manager,
|
||||
ply_renderer_t *renderer)
|
||||
{
|
||||
ply_list_node_t *node;
|
||||
|
||||
node = ply_list_get_first_node (manager->keyboards);
|
||||
while (node != NULL) {
|
||||
ply_list_node_t *next_node;
|
||||
ply_keyboard_t *keyboard;
|
||||
ply_renderer_t *keyboard_renderer;
|
||||
|
||||
keyboard = ply_list_node_get_data (node);
|
||||
next_node = ply_list_get_next_node (manager->keyboards, node);
|
||||
keyboard_renderer = ply_keyboard_get_renderer (keyboard);
|
||||
|
||||
if (keyboard_renderer == renderer) {
|
||||
ply_keyboard_free (keyboard);
|
||||
ply_list_remove_node (manager->keyboards, node);
|
||||
}
|
||||
|
||||
node = next_node;
|
||||
}
|
||||
if (ply_list_get_first_node (manager->keyboards) == NULL) {
|
||||
manager->local_console_managed = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
free_devices_from_device_path (ply_device_manager_t *manager,
|
||||
const char *device_path)
|
||||
|
|
@ -152,6 +180,7 @@ free_devices_from_device_path (ply_device_manager_t *manager,
|
|||
return;
|
||||
|
||||
free_displays_for_renderer (manager, renderer);
|
||||
free_keyboards_for_renderer (manager, renderer);
|
||||
|
||||
ply_hashtable_remove (manager->renderers, (void *) device_path);
|
||||
free (key);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue