]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
device-manager: Ensure local_console_terminal isn't NULL
authorRay Strode <rstrode@redhat.com>
Tue, 29 Nov 2022 00:17:33 +0000 (19:17 -0500)
committerRay Strode <rstrode@redhat.com>
Tue, 29 Nov 2022 00:19:13 +0000 (19:19 -0500)
We thought we could get away with a NULL local_console_terminal
when the terminal isn't a VT, but it turns out we need it for
various reasons anyway.

This commit just makes sure we keep it in place.

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

index 04a17e8e1fc79dace5b57578a87b180c4cc0ddff..3e02326ab7c6bfa4170846b5d7ab6cfdc5d663a6 100644 (file)
@@ -430,7 +430,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) {
+                        if (!manager->local_console_managed &&
+                            manager->local_console_terminal != NULL &&
+                            ply_terminal_is_vt (manager->local_console_terminal)) {
                                 terminal = manager->local_console_terminal;
                         }
 
@@ -859,7 +861,6 @@ ply_device_manager_new (const char                *default_tty,
                         ply_device_manager_flags_t flags)
 {
         ply_device_manager_t *manager;
-        ply_terminal_t *terminal;
 
         manager = calloc (1, sizeof(ply_device_manager_t));
         manager->loop = NULL;
@@ -868,17 +869,10 @@ ply_device_manager_new (const char                *default_tty,
 
         parse_vconsole_conf (manager);
 
-        terminal = ply_terminal_new (default_tty, manager->keymap);
-
-        if (!ply_terminal_is_vt (terminal)) {
-                ply_terminal_free (terminal);
-                terminal = NULL;
-        }
-
         manager->terminals = ply_hashtable_new (ply_hashtable_string_hash, ply_hashtable_string_compare);
         manager->renderers = ply_hashtable_new (ply_hashtable_string_hash, ply_hashtable_string_compare);
+        manager->local_console_terminal =  ply_terminal_new (default_tty, manager->keymap);
         manager->input_devices = ply_hashtable_new (ply_hashtable_string_hash, ply_hashtable_string_compare);
-        manager->local_console_terminal = terminal;
         manager->keyboards = ply_list_new ();
         manager->text_displays = ply_list_new ();
         manager->pixel_displays = ply_list_new ();