rpms/plymouth/F-12 fix-details-clear-screen.patch, NONE, 1.1 fix-emergency-shell.patch, NONE, 1.1 plymouth.spec, 1.153, 1.154

Ray Strode rstrode at fedoraproject.org
Thu Oct 8 21:50:01 UTC 2009


Author: rstrode

Update of /cvs/pkgs/rpms/plymouth/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22397

Modified Files:
	plymouth.spec 
Added Files:
	fix-details-clear-screen.patch fix-emergency-shell.patch 
Log Message:
- Fix emergency shell horkage (bug 526597)
- Fix problem with details splash not showing up (bug 527426, bug 527254)


fix-details-clear-screen.patch:
 b/src/libplybootsplash/ply-renderer.c |   13 +++++++++++--
 src/libplybootsplash/ply-renderer.c   |   12 +++---------
 2 files changed, 14 insertions(+), 11 deletions(-)

--- NEW FILE fix-details-clear-screen.patch ---
>From bda90f63c1194a312426eb2528f37f505672d8f9 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode at redhat.com>
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 <rstrode at redhat.com>
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


fix-emergency-shell.patch:
 b/src/libplybootsplash/ply-renderer.c |   13 ++++++++++---
 b/src/libplybootsplash/ply-terminal.c |    4 ++--
 b/src/main.c                          |    3 ++-
 src/main.c                            |    7 +++----
 4 files changed, 17 insertions(+), 10 deletions(-)

--- NEW FILE fix-emergency-shell.patch ---
>From 288c110fa1e35b0bf32f0e3480cf677e83a5bc23 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode at redhat.com>
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 <rstrode at redhat.com>
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 <rstrode at redhat.com>
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 <rstrode at redhat.com>
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



Index: plymouth.spec
===================================================================
RCS file: /cvs/pkgs/rpms/plymouth/F-12/plymouth.spec,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -p -r1.153 -r1.154
--- plymouth.spec	7 Oct 2009 21:43:11 -0000	1.153
+++ plymouth.spec	8 Oct 2009 21:50:00 -0000	1.154
@@ -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 <rstrode at redhat.com> 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 <rstrode at redhat.com> 0.8.0-0.2009.29.09.6
 - Fix the reason radeon single head users were affected.
 




More information about the scm-commits mailing list