From: Hans de Goede Date: Wed, 5 Jun 2024 19:38:43 +0000 (+0200) Subject: ply-device-manager: Move local_console_terminal handling for DRM/FB renderers X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb5abda0c2fbcd88892f2fbd346a1ac2413cc8ad;p=thirdparty%2Fplymouth.git ply-device-manager: Move local_console_terminal handling for DRM/FB renderers create_devices_for_terminal_and_renderer_type () only ever gets called with a NULL terminal parameter when create_devices_for_udev_device () is calling it to create a DRM or FB renderer. Move the use of local_console_terminal as terminal for the first DRM / FB renderer created from create_devices_for_udev_device () to create_devices_for_terminal_and_renderer_type () with an extra !terminal check. This is a preparation patch for fixing an issue where the local_console is managed by a simpledrm renderer and the remove event for that gets processed after the add event of the normal drm device which leaves the local_console unmanaged breaking legacy input support. --- diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c index 51990b7c..65504e93 100644 --- a/src/libply-splash-core/ply-device-manager.c +++ b/src/libply-splash-core/ply-device-manager.c @@ -441,17 +441,9 @@ create_devices_for_udev_device (ply_device_manager_t *manager, } if (renderer_type != PLY_RENDERER_TYPE_NONE) { - ply_terminal_t *terminal = NULL; - - if (!manager->local_console_managed && - manager->local_console_terminal != NULL && - ply_terminal_is_vt (manager->local_console_terminal)) { - terminal = manager->local_console_terminal; - } - created = create_devices_for_terminal_and_renderer_type (manager, device_path, - terminal, + NULL, renderer_type); if (created) { if (renderer_type == PLY_RENDERER_TYPE_DRM || @@ -1105,6 +1097,11 @@ create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager, return true; } + if (!terminal && !manager->local_console_managed && + manager->local_console_terminal != NULL && + ply_terminal_is_vt (manager->local_console_terminal)) + terminal = manager->local_console_terminal; + ply_trace ("creating devices for %s (renderer type: %u) (terminal: %s)", device_path ? : "", renderer_type, terminal ? ply_terminal_get_name (terminal) : "none");