From: Ray Strode Date: Fri, 2 Nov 2012 21:26:41 +0000 (-0400) Subject: main: make plymouth show-splash idempotent X-Git-Tag: 0.9.0~116 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a6129abfc527ac247685d80fc5c20144be1badca;p=thirdparty%2Fplymouth.git main: make plymouth show-splash idempotent plymouth show-splash causes hairy things, that should only happen once, like activating renderers to happen. This commit makes subsequent show-splash calls be no-ops. --- diff --git a/src/main.c b/src/main.c index 60ca28f5..ff061630 100644 --- a/src/main.c +++ b/src/main.c @@ -113,6 +113,7 @@ typedef struct uint32_t should_be_attached : 1; uint32_t should_retain_splash : 1; uint32_t is_inactive : 1; + uint32_t is_shown : 1; uint32_t should_force_details : 1; char *kernel_console_tty; @@ -871,6 +872,12 @@ on_show_splash (state_t *state) { bool has_display; + if (state->is_shown) + { + ply_trace ("show splash called while already shown"); + return; + } + if (state->is_inactive) { ply_trace ("show splash called while inactive"); @@ -884,6 +891,8 @@ on_show_splash (state_t *state) return; } + state->is_shown = true; + check_for_consoles (state, state->default_tty, true); has_display = ply_list_get_length (state->pixel_displays) > 0 || @@ -1012,6 +1021,8 @@ dump_details_and_quit_splash (state_t *state) if (state->boot_splash != NULL) ply_boot_splash_hide (state->boot_splash); + state->is_shown = false; + quit_splash (state); } @@ -1116,6 +1127,8 @@ on_boot_splash_idle (state_t *state) ply_renderer_deactivate (state->renderer); if (state->boot_splash != NULL) ply_boot_splash_hide (state->boot_splash); + + state->is_shown = false; } ply_trace ("quitting splash");