]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
device-manager: force details if serial consoles are used
authorRay Strode <rstrode@redhat.com>
Fri, 24 Jul 2015 20:23:00 +0000 (16:23 -0400)
committerRay Strode <rstrode@redhat.com>
Thu, 30 Jul 2015 20:03:12 +0000 (16:03 -0400)
it's better to skip trying to load the default splash rather than
relying on it failing and falling back.

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

index 488f86be829fcda289a5421be2ab16fded846911..31a6f62571db833fb3d3e8d249edc69e36db9718 100644 (file)
@@ -71,6 +71,7 @@ struct _ply_device_manager
 
         uint32_t                    local_console_managed : 1;
         uint32_t                    local_console_is_text : 1;
+        uint32_t                    serial_consoles_detected : 1;
 };
 
 static void
@@ -727,6 +728,8 @@ create_devices_from_terminals (ply_device_manager_t *manager)
 
         if (has_serial_consoles) {
                 ply_trace ("serial consoles detected, managing them with details forced");
+                manager->serial_consoles_detected = true;
+
                 ply_hashtable_foreach (manager->terminals,
                                        (ply_hashtable_foreach_func_t *)
                                        create_devices_for_terminal,
@@ -889,6 +892,12 @@ ply_device_manager_get_default_terminal (ply_device_manager_t *manager)
         return manager->local_console_terminal;
 }
 
+bool
+ply_device_manager_has_serial_consoles (ply_device_manager_t *manager)
+{
+        return manager->serial_consoles_detected;
+}
+
 static void
 activate_renderer (char                 *device_path,
                    ply_renderer_t       *renderer,
index 599be9052286482f77560e01575a05366029596b..ace517cd6f8e66bf2dc38bb2a99c6e82525fee0f 100644 (file)
@@ -53,6 +53,7 @@ void ply_device_manager_watch_devices (ply_device_manager_t                *mana
                                        ply_text_display_added_handler_t     text_display_added_handler,
                                        ply_text_display_removed_handler_t   text_display_removed_handler,
                                        void                                *data);
+bool ply_device_manager_has_serial_consoles (ply_device_manager_t *manager);
 bool ply_device_manager_has_displays (ply_device_manager_t *manager);
 ply_list_t *ply_device_manager_get_keyboards (ply_device_manager_t *manager);
 ply_list_t *ply_device_manager_get_pixel_displays (ply_device_manager_t *manager);
index 89cb60739a8c1554e61071d40f17e2b50b8249fd..36fc157037153e791d52846255fe0c08dec0c715 100644 (file)
@@ -1084,6 +1084,10 @@ load_devices (state_t                   *state,
                                           (ply_text_display_removed_handler_t)
                                           on_text_display_removed,
                                           state);
+
+        if (ply_device_manager_has_serial_consoles (state->device_manager)) {
+                state->should_force_details = true;
+        }
 }
 
 static void