Blob Blame Raw
diff -up plymouth-0.6.0/src/main.c.fix-switchroot-failed plymouth-0.6.0/src/main.c
--- plymouth-0.6.0/src/main.c.fix-switchroot-failed	2008-11-06 10:43:41.000000000 -0500
+++ plymouth-0.6.0/src/main.c	2008-11-06 18:12:51.000000000 -0500
@@ -77,6 +77,7 @@ static ply_window_t *create_window (stat
                                     const char *tty_name);
 
 static bool attach_to_running_session (state_t *state);
+static void on_escape_pressed (state_t *state);
 
 static void
 on_session_output (state_t    *state,
@@ -171,8 +172,11 @@ on_newroot (state_t    *state,
   chdir(root_dir);
   chroot(".");
   chdir("/");
-  ply_progress_load_cache (state->progress);
-  ply_boot_splash_root_mounted (state->boot_splash);
+  if (state->boot_splash != NULL)
+    {
+      ply_progress_load_cache (state->progress);
+      ply_boot_splash_root_mounted (state->boot_splash);
+    }
 }
 
 static void
@@ -356,6 +360,8 @@ on_hide_splash (state_t *state)
 {
 
   ply_trace ("hiding boot splash");
+  state->showing_details = false;
+  on_escape_pressed (state);
   if (state->boot_splash != NULL)
     ply_boot_splash_hide (state->boot_splash);
 
@@ -384,11 +390,12 @@ on_quit (state_t *state,
   if (state->boot_splash != NULL)
     {
       if (!retain_splash)
-        on_hide_splash (state);
-      else
-        quit_splash (state);
-      ply_boot_splash_free (state->boot_splash);
-      state->boot_splash = NULL;
+        {
+          if (state->boot_splash != NULL)
+              ply_boot_splash_hide (state->boot_splash);
+        }
+
+      quit_splash (state);
     }
   ply_trace ("exiting event loop");
   ply_event_loop_exit (state->loop, 0);
diff -up plymouth-0.6.0/src/plugins/splash/details/plugin.c.fix-switchroot-failed plymouth-0.6.0/src/plugins/splash/details/plugin.c
--- plymouth-0.6.0/src/plugins/splash/details/plugin.c.fix-switchroot-failed	2008-11-06 18:25:43.000000000 -0500
+++ plymouth-0.6.0/src/plugins/splash/details/plugin.c	2008-11-06 18:25:47.000000000 -0500
@@ -231,8 +231,6 @@ static void
 uninitialize_window (ply_window_t             *window,
                      ply_boot_splash_plugin_t *plugin)
 {
-  ply_window_clear_screen (window);
-
   ply_window_set_keyboard_input_handler (window, NULL, NULL);
   ply_window_set_backspace_handler (window, NULL, NULL);
   ply_window_set_enter_handler (window, NULL, NULL);