]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-device-manager: Move local_console_terminal handling for DRM/FB renderers
authorHans de Goede <hdegoede@redhat.com>
Wed, 5 Jun 2024 19:38:43 +0000 (21:38 +0200)
committerHans de Goede <hdegoede@redhat.com>
Fri, 7 Jun 2024 15:21:00 +0000 (17:21 +0200)
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.

src/libply-splash-core/ply-device-manager.c

index 51990b7c3071190aecaaa2d499a4c4652a783bfc..65504e937c9543d406d89e3c7435516e38d65e2f 100644 (file)
@@ -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");