diff -up plymouth-0.6.0/src/main.c.force-raw-mode plymouth-0.6.0/src/main.c --- plymouth-0.6.0/src/main.c.force-raw-mode 2008-10-28 16:18:44.000000000 -0400 +++ plymouth-0.6.0/src/main.c 2008-10-28 16:22:37.000000000 -0400 @@ -323,13 +323,10 @@ on_show_splash (state_t *state) } static void -on_hide_splash (state_t *state) +quit_splash (state_t *state) { - - ply_trace ("hiding boot splash"); if (state->boot_splash != NULL) { - ply_boot_splash_hide (state->boot_splash); ply_boot_splash_free (state->boot_splash); state->boot_splash = NULL; } @@ -350,6 +347,17 @@ on_hide_splash (state_t *state) } } +static void +on_hide_splash (state_t *state) +{ + + ply_trace ("hiding boot splash"); + if (state->boot_splash != NULL) + ply_boot_splash_hide (state->boot_splash); + + quit_splash (state); +} + #ifdef PLY_ENABLE_GDM_TRANSITION static void tell_gdm_to_transition (void) @@ -373,6 +381,8 @@ on_quit (state_t *state, { if (!retain_splash) on_hide_splash (state); + else + quit_splash (state); ply_boot_splash_free (state->boot_splash); state->boot_splash = NULL; } diff -up plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c.force-raw-mode plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c --- plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c.force-raw-mode 2008-10-16 15:59:36.000000000 -0400 +++ plymouth-0.6.0/src/plugins/splash/fade-in/plugin.c 2008-10-28 15:55:04.000000000 -0400 @@ -199,6 +199,8 @@ animate_at_time (ply_boot_splash_plugin_ static double last_opacity = 0.0; double opacity = 0.0; + ply_window_set_mode (plugin->window, PLY_WINDOW_MODE_GRAPHICS); + ply_frame_buffer_pause_updates (plugin->frame_buffer); width = ply_image_get_width (plugin->logo_image); diff -up plymouth-0.6.0/src/plugins/splash/solar/plugin.c.force-raw-mode plymouth-0.6.0/src/plugins/splash/solar/plugin.c --- plymouth-0.6.0/src/plugins/splash/solar/plugin.c.force-raw-mode 2008-10-24 13:29:04.000000000 -0400 +++ plymouth-0.6.0/src/plugins/splash/solar/plugin.c 2008-10-28 15:55:04.000000000 -0400 @@ -669,7 +669,9 @@ animate_attime (ply_boot_splash_plugin_t { ply_list_node_t *node; long width, height; - + + ply_window_set_mode (plugin->window, PLY_WINDOW_MODE_GRAPHICS); + if (plugin->progress_target>=0) plugin->progress = (plugin->progress*10 + plugin->progress_target) /11;