diff --git a/plymouth-0.6.0-fix-escape-at-password-prompt.patch b/plymouth-0.6.0-fix-escape-at-password-prompt.patch new file mode 100644 index 0000000..d35d906 --- /dev/null +++ b/plymouth-0.6.0-fix-escape-at-password-prompt.patch @@ -0,0 +1,219 @@ +diff -ur plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c new/src/plugins/splash/fade-in/plugin.c +--- plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c 2008-10-30 15:42:04.000000000 -0400 ++++ new/src/plugins/splash/fade-in/plugin.c 2008-10-30 15:39:12.000000000 -0400 +@@ -81,6 +81,8 @@ + + double start_time; + double now; ++ ++ uint32_t is_animating : 1; + }; + + ply_boot_splash_plugin_t * +@@ -303,6 +305,9 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (plugin->is_animating) ++ return; ++ + ply_event_loop_watch_for_timeout (plugin->loop, + 1.0 / FRAMES_PER_SECOND, + (ply_event_loop_timeout_handler_t) +@@ -310,6 +315,8 @@ + + plugin->start_time = ply_get_timestamp (); + draw_background (plugin, NULL); ++ ++ plugin->is_animating = true; + } + + static void +@@ -320,6 +327,11 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (!plugin->is_animating) ++ return; ++ ++ plugin->is_animating = false; ++ + for (i = 0; i < 10; i++) + { + ply_frame_buffer_fill_with_hex_color_at_opacity (plugin->frame_buffer, +diff -ur plymouth-0.6.0/src/plugins/splash/pulser/plugin.c new/src/plugins/splash/pulser/plugin.c +--- plymouth-0.6.0/src/plugins/splash/pulser/plugin.c 2008-10-16 15:59:36.000000000 -0400 ++++ new/src/plugins/splash/pulser/plugin.c 2008-10-30 15:40:23.000000000 -0400 +@@ -67,6 +67,7 @@ + ply_text_pulser_t *pulser; + + uint32_t keyboard_input_is_hidden : 1; ++ uint32_t is_animating : 1; + }; + void hide_splash_screen (ply_boot_splash_plugin_t *plugin, + ply_event_loop_t *loop); +@@ -119,6 +120,9 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (plugin->is_animating) ++ return; ++ + ply_window_set_color_hex_value (plugin->window, + PLY_WINDOW_COLOR_BROWN, + PLYMOUTH_BACKGROUND_END_COLOR); +@@ -142,6 +146,8 @@ + plugin->window, + window_width / 2.0 - width / 2.0, + window_height / 2.0 - height / 2.0); ++ ++ plugin->is_animating = true; + } + + static void +@@ -150,6 +156,11 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (!plugin->is_animating) ++ return; ++ ++ plugin->is_animating = false; ++ + ply_text_pulser_stop (plugin->pulser); + } + +diff -ur plymouth-0.6.0/src/plugins/splash/solar/plugin.c new/src/plugins/splash/solar/plugin.c +--- plymouth-0.6.0/src/plugins/splash/solar/plugin.c 2008-10-30 15:42:04.000000000 -0400 ++++ new/src/plugins/splash/solar/plugin.c 2008-10-30 15:39:12.000000000 -0400 +@@ -187,6 +187,7 @@ + + uint32_t root_is_mounted : 1; + uint32_t is_visible : 1; ++ uint32_t is_animating : 1; + }; + + static void detach_from_event_loop (ply_boot_splash_plugin_t *plugin); +@@ -759,6 +760,9 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (plugin->is_animating) ++ return; ++ + ply_frame_buffer_get_size (plugin->frame_buffer, &area); + + plugin->now = ply_get_timestamp (); +@@ -766,6 +770,7 @@ + on_timeout (plugin); + ply_window_draw_area (plugin->window, area.x, area.y, area.width, area.height); + ++ plugin->is_animating = true; + } + + static void +@@ -778,6 +783,11 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (!plugin->is_animating) ++ return; ++ ++ plugin->is_animating = false; ++ + if (plugin->loop != NULL) + { + ply_event_loop_stop_watching_for_timeout (plugin->loop, +@@ -796,7 +806,6 @@ + free_sprite (sprite); + } + ply_list_remove_all_nodes (plugin->sprites); +- + } + + static void +diff -ur plymouth-0.6.0/src/plugins/splash/spinfinity/plugin.c new/src/plugins/splash/spinfinity/plugin.c +--- plymouth-0.6.0/src/plugins/splash/spinfinity/plugin.c 2008-10-21 09:09:39.000000000 -0400 ++++ new/src/plugins/splash/spinfinity/plugin.c 2008-10-30 15:38:20.000000000 -0400 +@@ -86,6 +86,7 @@ + + uint32_t root_is_mounted : 1; + uint32_t is_visible : 1; ++ uint32_t is_animating : 1; + }; + + static void detach_from_event_loop (ply_boot_splash_plugin_t *plugin); +@@ -183,6 +184,9 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (plugin->is_animating) ++ return; ++ + draw_background (plugin, NULL); + draw_logo (plugin); + +@@ -198,6 +202,8 @@ + ply_progress_bar_show (plugin->progress_bar, + plugin->window, + 0, area.height - ply_progress_bar_get_height (plugin->progress_bar)); ++ ++ plugin->is_animating = true; + } + + static void +@@ -209,6 +215,11 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (!plugin->is_animating) ++ return; ++ ++ plugin->is_animating = false; ++ + ply_progress_bar_hide (plugin->progress_bar); + ply_throbber_stop (plugin->throbber, trigger); + +diff -ur plymouth-0.6.0/src/plugins/splash/text/plugin.c new/src/plugins/splash/text/plugin.c +--- plymouth-0.6.0/src/plugins/splash/text/plugin.c 2008-10-16 15:59:36.000000000 -0400 ++++ new/src/plugins/splash/text/plugin.c 2008-10-30 15:41:23.000000000 -0400 +@@ -68,6 +68,7 @@ + ply_text_progress_bar_t *progress_bar; + + uint32_t keyboard_input_is_hidden : 1; ++ uint32_t is_animating : 1; + }; + void hide_splash_screen (ply_boot_splash_plugin_t *plugin, + ply_event_loop_t *loop); +@@ -120,6 +121,9 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (plugin->is_animating) ++ return; ++ + ply_window_set_color_hex_value (plugin->window, + PLY_WINDOW_COLOR_BLACK, + 0x000000); +@@ -147,6 +151,8 @@ + + ply_text_progress_bar_show (plugin->progress_bar, + plugin->window); ++ ++ plugin->is_animating = true; + } + + static void +@@ -155,6 +161,12 @@ + assert (plugin != NULL); + assert (plugin->loop != NULL); + ++ if (!plugin->is_animating) ++ return; ++ ++ plugin->is_animating = false; ++ ++ + ply_text_progress_bar_hide (plugin->progress_bar); + } + diff --git a/plymouth.spec b/plymouth.spec index 35f3805..9f1bd58 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -5,7 +5,7 @@ Summary: Plymouth Graphical Boot Animation and Logger Name: plymouth Version: 0.6.0 -Release: 0.2008.10.27.7%{?dist} +Release: 0.2008.10.27.8%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2 @@ -22,6 +22,7 @@ Requires: initscripts >= 8.83-1 Patch0: plymouth-0.6.0-force-raw-mode.patch Patch1: plymouth-0.6.0-dont-require-bin-plymouth.patch +Patch2: plymouth-0.6.0-fix-escape-at-password-prompt.patch %description Plymouth provides an attractive graphical boot animation in @@ -155,6 +156,7 @@ where the graphical plugin's dependencies are undesirable. %setup -q %patch0 -p1 -b .force-raw-mode %patch1 -p1 -b .dont-require-bin-plymouth +%patch2 -p1 -b .fix-escape-at-password-prompt %build %configure --enable-tracing --disable-tests --without-boot-entry \ @@ -303,6 +305,9 @@ fi %defattr(-, root, root) %changelog +* Thu Oct 30 2008 Ray Strode 0.6.0-0.2008.10.27.8 +- Fix escape at password prompt (bug 467533) + * Tue Oct 28 2008 Ray Strode 0.6.0-0.2008.10.27.7 - Don't require /bin/plymouth before it's installed (bug 468925)