From 1fa1a8c9d95f4063fdf74e2518b9393a460e82cb Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Oct 08 2009 21:50:00 +0000 Subject: - Fix emergency shell horkage (bug 526597) - Fix problem with details splash not showing up (bug 527426, bug 527254) --- diff --git a/fix-details-clear-screen.patch b/fix-details-clear-screen.patch new file mode 100644 index 0000000..b5f9601 --- /dev/null +++ b/fix-details-clear-screen.patch @@ -0,0 +1,94 @@ +From bda90f63c1194a312426eb2528f37f505672d8f9 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 15:59:15 -0400 +Subject: [PATCH 1/2] [renderer] make map and unmap idempotent + +--- + src/libplybootsplash/ply-renderer.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +diff --git a/src/libplybootsplash/ply-renderer.c b/src/libplybootsplash/ply-renderer.c +index 0966418..7c6695f 100644 +--- a/src/libplybootsplash/ply-renderer.c ++++ b/src/libplybootsplash/ply-renderer.c +@@ -54,6 +54,7 @@ struct _ply_renderer + ply_console_t *console; + + uint32_t input_source_is_open : 1; ++ uint32_t is_mapped : 1; + }; + + typedef const ply_renderer_plugin_interface_t * +@@ -199,7 +200,12 @@ ply_renderer_map_to_device (ply_renderer_t *renderer) + assert (renderer != NULL); + assert (renderer->plugin_interface != NULL); + +- return renderer->plugin_interface->map_to_device (renderer->backend); ++ if (renderer->is_mapped) ++ return true; ++ ++ renderer->is_mapped = renderer->plugin_interface->map_to_device (renderer->backend); ++ ++ return renderer->is_mapped; + } + + static void +@@ -208,7 +214,11 @@ ply_renderer_unmap_from_device (ply_renderer_t *renderer) + assert (renderer != NULL); + assert (renderer->plugin_interface != NULL); + ++ if (!renderer->is_mapped) ++ return; ++ + renderer->plugin_interface->unmap_from_device (renderer->backend); ++ renderer->is_mapped = false; + } + + bool +-- +1.6.5.rc2 + + +From 89f07b8f81da2eddf31758d990d9cb262f2ba0ae Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 16:01:56 -0400 +Subject: [PATCH 2/2] [renderer] map buffer lazily + +This is to prevent screen clears on plugins that don't +use the renderers (text plugins) +--- + src/libplybootsplash/ply-renderer.c | 11 +++-------- + 1 files changed, 3 insertions(+), 8 deletions(-) + +diff --git a/src/libplybootsplash/ply-renderer.c b/src/libplybootsplash/ply-renderer.c +index 7c6695f..591af2c 100644 +--- a/src/libplybootsplash/ply-renderer.c ++++ b/src/libplybootsplash/ply-renderer.c +@@ -264,14 +264,6 @@ ply_renderer_open (ply_renderer_t *renderer) + continue; + } + +- if (!ply_renderer_map_to_device (renderer)) +- { +- ply_trace ("could not map renderer to device for plugin %s", +- plugin_path); +- ply_renderer_close_device (renderer); +- ply_renderer_unload_plugin (renderer); +- continue; +- } + return true; + } + +@@ -314,6 +306,9 @@ ply_renderer_flush_head (ply_renderer_t *renderer, + assert (renderer->plugin_interface != NULL); + assert (head != NULL); + ++ if (!ply_renderer_map_to_device (renderer)) ++ return; ++ + renderer->plugin_interface->flush_head (renderer->backend, head); + } + +-- +1.6.5.rc2 + diff --git a/fix-emergency-shell.patch b/fix-emergency-shell.patch new file mode 100644 index 0000000..05ea668 --- /dev/null +++ b/fix-emergency-shell.patch @@ -0,0 +1,146 @@ +From 288c110fa1e35b0bf32f0e3480cf677e83a5bc23 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 15:22:27 -0400 +Subject: [PATCH 1/4] [main] Disconnect from tty when hiding splash + +We were still processing keystrokes when the splash screen was +hidden. This caused problems because the tty is used by other +programs at that time. +--- + src/main.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/src/main.c b/src/main.c +index 31f2b1e..6f8c6bd 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -549,6 +549,8 @@ remove_displays_and_keyboard (state_t *state) + node = next_node; + } + ++ ply_keyboard_stop_watching_for_input (state->keyboard); ++ ply_keyboard_free (state->keyboard); + state->keyboard = NULL; + } + +-- +1.6.5.rc2 + + +From d8835ebfd35724dd12ec6e6a4c7b303996a37066 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 15:33:40 -0400 +Subject: [PATCH 2/4] [terminal] Only close terminal on free when open + +We were closing the terminal twice, causing assertions +to blow. +--- + src/libplybootsplash/ply-terminal.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/src/libplybootsplash/ply-terminal.c b/src/libplybootsplash/ply-terminal.c +index 462a4c6..8147e86 100644 +--- a/src/libplybootsplash/ply-terminal.c ++++ b/src/libplybootsplash/ply-terminal.c +@@ -499,7 +499,8 @@ ply_terminal_free (ply_terminal_t *terminal) + ply_terminal_detach_from_event_loop, + terminal); + +- ply_terminal_close (terminal); ++ if (terminal->is_open) ++ ply_terminal_close (terminal); + + free (terminal); + } +-- +1.6.5.rc2 + + +From 78d610e82a9eebdce7ab43a6e3acfee1057f6a2c Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 15:40:16 -0400 +Subject: [PATCH 3/4] [main] remove displays before closing renderer + +--- + src/main.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/main.c b/src/main.c +index 6f8c6bd..c309fab 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -604,6 +604,9 @@ quit_splash (state_t *state) + state->boot_splash = NULL; + } + ++ ply_trace ("removing displays and keyboard"); ++ remove_displays_and_keyboard (state); ++ + if (state->renderer != NULL) + { + ply_renderer_close (state->renderer); +@@ -618,9 +621,6 @@ quit_splash (state_t *state) + state->terminal = NULL; + } + +- ply_trace ("removing displays and keyboard"); +- remove_displays_and_keyboard (state); +- + if (state->session != NULL) + { + ply_trace ("detaching session"); +-- +1.6.5.rc2 + + +From e938daa05b05d5517cec61fab7caf0df75e5fa14 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Oct 2009 15:41:06 -0400 +Subject: [PATCH 4/4] [renderer] make input_source_close idempotent + +--- + src/libplybootsplash/ply-renderer.c | 12 ++++++++++-- + 1 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/libplybootsplash/ply-renderer.c b/src/libplybootsplash/ply-renderer.c +index f7f3c90..0966418 100644 +--- a/src/libplybootsplash/ply-renderer.c ++++ b/src/libplybootsplash/ply-renderer.c +@@ -52,6 +52,8 @@ struct _ply_renderer + char *device_name; + ply_terminal_t *terminal; + ply_console_t *console; ++ ++ uint32_t input_source_is_open : 1; + }; + + typedef const ply_renderer_plugin_interface_t * +@@ -321,8 +323,10 @@ ply_renderer_open_input_source (ply_renderer_t *renderer, + assert (renderer != NULL); + assert (input_source != NULL); + +- return renderer->plugin_interface->open_input_source (renderer->backend, +- input_source); ++ renderer->input_source_is_open = renderer->plugin_interface->open_input_source (renderer->backend, ++ input_source); ++ ++ return renderer->input_source_is_open; + } + + void +@@ -347,8 +351,12 @@ ply_renderer_close_input_source (ply_renderer_t *renderer, + assert (renderer != NULL); + assert (input_source != NULL); + ++ if (!renderer->input_source_is_open) ++ return; ++ + renderer->plugin_interface->close_input_source (renderer->backend, + input_source); ++ renderer->input_source_is_open = false; + } + + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +-- +1.6.5.rc2 + diff --git a/plymouth.spec b/plymouth.spec index 9f76526..da76302 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -5,7 +5,7 @@ Summary: Graphical Boot Animation and Logger Name: plymouth Version: 0.8.0 -Release: 0.2009.29.09.6%{?dist} +Release: 0.2009.29.09.7%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.tar.bz2 @@ -34,6 +34,8 @@ Patch1: fix-text-password-crash.patch Patch2: fix-firstboot-on-intel.patch Patch3: fix-firstboot-on-radeon.patch Patch4: more-drm-fixes.patch +Patch5: fix-emergency-shell.patch +Patch6: fix-details-clear-screen.patch %description Plymouth provides an attractive graphical boot animation in @@ -246,6 +248,8 @@ plugin. %patch2 -p1 -b .fix-firstboot-on-intel %patch3 -p1 -b .fix-firstboot-on-radeon %patch4 -p1 -b .more-drm-fixes +%patch5 -p1 -b .fix-emergency-shell +%patch6 -p1 -b .fix-details-clear-screen %build %configure --enable-tracing --disable-tests --without-boot-entry \ @@ -463,6 +467,10 @@ fi %defattr(-, root, root) %changelog +* Thu Oct 08 2009 Ray Strode 0.8.0-0.2009.29.09.7 +- Fix emergency shell horkage (bug 526597) +- Fix problem with details splash not showing up (bug 527426, bug 527254) + * Wed Oct 07 2009 Ray Strode 0.8.0-0.2009.29.09.6 - Fix the reason radeon single head users were affected.