diff --git a/fix-crash.patch b/fix-crash.patch index 07160c5..66fbaad 100644 --- a/fix-crash.patch +++ b/fix-crash.patch @@ -1,7 +1,7 @@ From 6ccedf7b6ecdc8314ed97355cfe5499fffb13a1e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 1 Nov 2012 17:04:33 -0400 -Subject: [PATCH 1/2] main: if deactivate when already deactivated return +Subject: [PATCH 1/3] main: if deactivate when already deactivated return immediately We were trying to ignore second deactivate requests, but @@ -40,7 +40,7 @@ index 88e5002..60ca28f 100644 From b3548ebaf76d222f56d6a7b34c5940b930d47609 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 1 Nov 2012 17:16:07 -0400 -Subject: [PATCH 2/2] two-step: don't update progress when idle +Subject: [PATCH 2/3] two-step: don't update progress when idle We've already reach a state where we aren't drawing anymore, etc, so don't update progress and potentially fire off animations @@ -66,3 +66,72 @@ index 2998beb..541a108 100644 -- 1.7.12.1 + +From a6129abfc527ac247685d80fc5c20144be1badca Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 2 Nov 2012 17:26:41 -0400 +Subject: [PATCH 3/3] 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. +--- + src/main.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/src/main.c b/src/main.c +index 60ca28f..ff06163 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"); +-- +1.7.12.1 + diff --git a/plymouth.spec b/plymouth.spec index bef429b..895cb33 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -6,7 +6,7 @@ Summary: Graphical Boot Animation and Logger Name: plymouth Version: 0.8.8 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2 @@ -507,6 +507,10 @@ fi %defattr(-, root, root) %changelog +* Fri Nov 02 2012 Ray Strode 0.8.8-3 +- More boot blocking fixes + Related: #870695 + * Thu Nov 01 2012 Ray Strode 0.8.8-2 - Fix crash when deactivating multiple times Related: #870695