From: Ray Strode Date: Fri, 24 Jul 2015 20:23:00 +0000 (-0400) Subject: device-manager: force details if serial consoles are used X-Git-Tag: 0.9.3~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77d303d07b44fbe26cb13b427c860140b90aaa3b;p=thirdparty%2Fplymouth.git device-manager: force details if serial consoles are used it's better to skip trying to load the default splash rather than relying on it failing and falling back. --- diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c index 488f86be..31a6f625 100644 --- a/src/libply-splash-core/ply-device-manager.c +++ b/src/libply-splash-core/ply-device-manager.c @@ -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, diff --git a/src/libply-splash-core/ply-device-manager.h b/src/libply-splash-core/ply-device-manager.h index 599be905..ace517cd 100644 --- a/src/libply-splash-core/ply-device-manager.h +++ b/src/libply-splash-core/ply-device-manager.h @@ -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); diff --git a/src/main.c b/src/main.c index 89cb6073..36fc1570 100644 --- a/src/main.c +++ b/src/main.c @@ -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