Add patches fixing crash on monitor hot(un)plug (rhbz#1809681)
Add patches fixing delay between gdm telling us to deactivate and us telling gdm it is ok to continue Drop plymouth-plugin-throbgress sub-package, the spinfinity theme now uses the two-step plugin
This commit is contained in:
parent
e6bcab41bc
commit
f97cb31771
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@ plymouth-0.8.4.tar.bz2
|
|||||||
/plymouth-0.9.4.tar.xz
|
/plymouth-0.9.4.tar.xz
|
||||||
/plymouth-a8aad27.tar.gz
|
/plymouth-a8aad27.tar.gz
|
||||||
/plymouth-32c097c.tar.gz
|
/plymouth-32c097c.tar.gz
|
||||||
|
/plymouth-58a7289.tar.gz
|
||||||
|
80
0001-ply-capslock-icon-Do-not-draw-on-free.patch
Normal file
80
0001-ply-capslock-icon-Do-not-draw-on-free.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
From d5afbcc4475d2cc1944ef51d4fe787792dc1c893 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 11:45:55 +0100
|
||||||
|
Subject: [PATCH 1/7] ply-capslock-icon: Do not draw on free
|
||||||
|
|
||||||
|
One case where the various widgets are being freed is the pixel-display-s
|
||||||
|
being removed because of a monitor being hot(un)plugged. When the monitor
|
||||||
|
configuration changes ply-device-manager removes all old pixel-displays
|
||||||
|
and then adds the pixel-displays from the new config.
|
||||||
|
|
||||||
|
Calling ply_pixel_display_draw_area on a pixel-display which is about to be
|
||||||
|
freed is a bad idea, if the monitor was actually unplugged this leads to
|
||||||
|
various sort of errors, including crashes in some cases.
|
||||||
|
|
||||||
|
ply-capslock-icon is a recently added widget, none of the other
|
||||||
|
(older) widgets redraw themselves as hidden on free because there is
|
||||||
|
no reason to do this.
|
||||||
|
|
||||||
|
This commit adds a new stop_polling helper and replaces the troublesome
|
||||||
|
hide call (which involves redrawing) with this. This fixes plymouth
|
||||||
|
sometimes crashing when monitors are hot(un)plugged while plymouth is
|
||||||
|
running.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/libply-splash-graphics/ply-capslock-icon.c | 16 ++++++++++++----
|
||||||
|
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libply-splash-graphics/ply-capslock-icon.c b/src/libply-splash-graphics/ply-capslock-icon.c
|
||||||
|
index 7d19a18..e60457f 100644
|
||||||
|
--- a/src/libply-splash-graphics/ply-capslock-icon.c
|
||||||
|
+++ b/src/libply-splash-graphics/ply-capslock-icon.c
|
||||||
|
@@ -52,6 +52,8 @@ struct _ply_capslock_icon
|
||||||
|
bool is_on;
|
||||||
|
};
|
||||||
|
|
||||||
|
+static void ply_capslock_stop_polling (ply_capslock_icon_t *capslock_icon);
|
||||||
|
+
|
||||||
|
ply_capslock_icon_t *
|
||||||
|
ply_capslock_icon_new (const char *image_dir)
|
||||||
|
{
|
||||||
|
@@ -74,7 +76,7 @@ ply_capslock_icon_free (ply_capslock_icon_t *capslock_icon)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!capslock_icon->is_hidden)
|
||||||
|
- ply_capslock_icon_hide (capslock_icon);
|
||||||
|
+ ply_capslock_stop_polling (capslock_icon);
|
||||||
|
|
||||||
|
if (capslock_icon->buffer != NULL)
|
||||||
|
ply_pixel_buffer_free (capslock_icon->buffer);
|
||||||
|
@@ -121,6 +123,14 @@ on_timeout (void *user_data,
|
||||||
|
on_timeout, capslock_icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+ply_capslock_stop_polling (ply_capslock_icon_t *capslock_icon)
|
||||||
|
+{
|
||||||
|
+ ply_event_loop_stop_watching_for_timeout (capslock_icon->loop,
|
||||||
|
+ (ply_event_loop_timeout_handler_t)
|
||||||
|
+ on_timeout, capslock_icon);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool
|
||||||
|
ply_capslock_icon_load (ply_capslock_icon_t *capslock_icon)
|
||||||
|
{
|
||||||
|
@@ -183,10 +193,8 @@ ply_capslock_icon_hide (ply_capslock_icon_t *capslock_icon)
|
||||||
|
capslock_icon->is_hidden = true;
|
||||||
|
|
||||||
|
ply_capslock_icon_draw (capslock_icon);
|
||||||
|
+ ply_capslock_stop_polling (capslock_icon);
|
||||||
|
|
||||||
|
- ply_event_loop_stop_watching_for_timeout (capslock_icon->loop,
|
||||||
|
- (ply_event_loop_timeout_handler_t)
|
||||||
|
- on_timeout, capslock_icon);
|
||||||
|
capslock_icon->loop = NULL;
|
||||||
|
capslock_icon->display = NULL;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
44
0002-ply-keymap-icon-Do-not-draw-on-free.patch
Normal file
44
0002-ply-keymap-icon-Do-not-draw-on-free.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
From c9b084882bb26a339acb06aa96f748c8f6b465e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 11:50:17 +0100
|
||||||
|
Subject: [PATCH 2/7] ply-keymap-icon: Do not draw on free
|
||||||
|
|
||||||
|
One case where the various widgets are being freed is the pixel-display-s
|
||||||
|
being removed because of a monitor being hot(un)plugged. When the monitor
|
||||||
|
configuration changes ply-device-manager removes all old pixel-displays
|
||||||
|
and then adds the pixel-displays from the new config.
|
||||||
|
|
||||||
|
Calling ply_pixel_display_draw_area on a pixel-display which is about to be
|
||||||
|
freed is a bad idea, if the monitor was actually unplugged this leads to
|
||||||
|
various sort of errors, including crashes in some cases.
|
||||||
|
|
||||||
|
ply-keymap-icon is a recently added widget, none of the other
|
||||||
|
(older) widgets redraw themselves as hidden on free because there is
|
||||||
|
no reason to do this.
|
||||||
|
|
||||||
|
This commit removes the troublesome hide call (which involves redrawing).
|
||||||
|
This fixes plymouth sometimes crashing when monitors are hot(un)plugged
|
||||||
|
while plymouth is running.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/libply-splash-graphics/ply-keymap-icon.c | 3 ---
|
||||||
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libply-splash-graphics/ply-keymap-icon.c b/src/libply-splash-graphics/ply-keymap-icon.c
|
||||||
|
index f9ec614..d537527 100644
|
||||||
|
--- a/src/libply-splash-graphics/ply-keymap-icon.c
|
||||||
|
+++ b/src/libply-splash-graphics/ply-keymap-icon.c
|
||||||
|
@@ -130,9 +130,6 @@ ply_keymap_icon_free (ply_keymap_icon_t *keymap_icon)
|
||||||
|
if (keymap_icon == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!keymap_icon->is_hidden)
|
||||||
|
- ply_keymap_icon_hide (keymap_icon);
|
||||||
|
-
|
||||||
|
ply_pixel_buffer_free (keymap_icon->icon_buffer);
|
||||||
|
ply_pixel_buffer_free (keymap_icon->keymap_buffer);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,88 @@
|
|||||||
|
From 82a1aaaaddeb4dc65728c28d6ccc776f38cd6f5d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 11:51:03 +0100
|
||||||
|
Subject: [PATCH 3/7] ply-throbber: Do not redraw when we need to stop
|
||||||
|
throbbing on free
|
||||||
|
|
||||||
|
One case where the various widgets are being freed is the pixel-display-s
|
||||||
|
being removed because of a monitor being hot(un)plugged. When the monitor
|
||||||
|
configuration changes ply-device-manager removes all old pixel-displays
|
||||||
|
and then adds the pixel-displays from the new config.
|
||||||
|
|
||||||
|
Calling ply_pixel_display_draw_area on a pixel-display which is about to be
|
||||||
|
freed is a bad idea, if the monitor was actually unplugged this leads to
|
||||||
|
various sort of errors, including crashes in some cases.
|
||||||
|
|
||||||
|
ply-throbber is the only (older) widget which does a redraw on free,
|
||||||
|
this likely was not noticed until now because typically the throbber
|
||||||
|
will already have been stopped on free.
|
||||||
|
|
||||||
|
This commit adds a redraw parameter to ply_throbber_stop_now and sets
|
||||||
|
this to false when calling ply_throbber_stop_now from ply_throbber_free.
|
||||||
|
This fixes plymouth sometimes crashing when monitors are hot(un)plugged
|
||||||
|
while plymouth is running.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/libply-splash-graphics/ply-throbber.c | 21 ++++++++++++---------
|
||||||
|
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libply-splash-graphics/ply-throbber.c b/src/libply-splash-graphics/ply-throbber.c
|
||||||
|
index a4311fd..bf0855e 100644
|
||||||
|
--- a/src/libply-splash-graphics/ply-throbber.c
|
||||||
|
+++ b/src/libply-splash-graphics/ply-throbber.c
|
||||||
|
@@ -78,7 +78,7 @@ struct _ply_throbber
|
||||||
|
uint32_t is_stopped : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
-static void ply_throbber_stop_now (ply_throbber_t *throbber);
|
||||||
|
+static void ply_throbber_stop_now (ply_throbber_t *throbber, bool redraw);
|
||||||
|
|
||||||
|
ply_throbber_t *
|
||||||
|
ply_throbber_new (const char *image_dir,
|
||||||
|
@@ -126,7 +126,7 @@ ply_throbber_free (ply_throbber_t *throbber)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!throbber->is_stopped)
|
||||||
|
- ply_throbber_stop_now (throbber);
|
||||||
|
+ ply_throbber_stop_now (throbber, false);
|
||||||
|
|
||||||
|
ply_throbber_remove_frames (throbber);
|
||||||
|
ply_array_free (throbber->frames);
|
||||||
|
@@ -324,15 +324,18 @@ ply_throbber_start (ply_throbber_t *throbber,
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-ply_throbber_stop_now (ply_throbber_t *throbber)
|
||||||
|
+ply_throbber_stop_now (ply_throbber_t *throbber, bool redraw)
|
||||||
|
{
|
||||||
|
throbber->is_stopped = true;
|
||||||
|
|
||||||
|
- ply_pixel_display_draw_area (throbber->display,
|
||||||
|
- throbber->x,
|
||||||
|
- throbber->y,
|
||||||
|
- throbber->frame_area.width,
|
||||||
|
- throbber->frame_area.height);
|
||||||
|
+ if (redraw) {
|
||||||
|
+ ply_pixel_display_draw_area (throbber->display,
|
||||||
|
+ throbber->x,
|
||||||
|
+ throbber->y,
|
||||||
|
+ throbber->frame_area.width,
|
||||||
|
+ throbber->frame_area.height);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (throbber->loop != NULL) {
|
||||||
|
ply_event_loop_stop_watching_for_timeout (throbber->loop,
|
||||||
|
(ply_event_loop_timeout_handler_t)
|
||||||
|
@@ -356,7 +359,7 @@ ply_throbber_stop (ply_throbber_t *throbber,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stop_trigger == NULL) {
|
||||||
|
- ply_throbber_stop_now (throbber);
|
||||||
|
+ ply_throbber_stop_now (throbber, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
From b6ae2adabfef64ace22698f76afae454a6419492 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 21:16:38 +0100
|
||||||
|
Subject: [PATCH 4/7] event-loop: Fix debug-log "failed to delete fd # from
|
||||||
|
epoll watch list" spam
|
||||||
|
|
||||||
|
The boot server uses a disconnect handler which closes the fd, this
|
||||||
|
causes deleting the fd from the epoll watch list to fail with an EBADF
|
||||||
|
error. Since the fd was closed it was already removed from the epoll
|
||||||
|
watch list, so the failure is harmless, silence these errors getting logged
|
||||||
|
to the debug logs.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/libply/ply-event-loop.c | 6 +++++-
|
||||||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/libply/ply-event-loop.c b/src/libply/ply-event-loop.c
|
||||||
|
index 0e8ad7c..5eb601c 100644
|
||||||
|
--- a/src/libply/ply-event-loop.c
|
||||||
|
+++ b/src/libply/ply-event-loop.c
|
||||||
|
@@ -641,7 +641,11 @@ ply_event_loop_remove_source_node (ply_event_loop_t *loop,
|
||||||
|
|
||||||
|
status = epoll_ctl (loop->epoll_fd, EPOLL_CTL_DEL, source->fd, NULL);
|
||||||
|
|
||||||
|
- if (status < 0)
|
||||||
|
+ /*
|
||||||
|
+ * EBADF means that there was a disconnect handler, which has
|
||||||
|
+ * closed the fd, which is fine, do not log an error for this.
|
||||||
|
+ */
|
||||||
|
+ if (status < 0 && errno != EBADF)
|
||||||
|
ply_trace ("failed to delete fd %d from epoll watch list: %m", source->fd);
|
||||||
|
source->is_getting_polled = false;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 9c25da99889439924eeae953f357233bdb99d569 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 21:19:38 +0100
|
||||||
|
Subject: [PATCH 5/7] event-loop: Remove ply_trace calls around the disconnect
|
||||||
|
handler
|
||||||
|
|
||||||
|
Doing a ply_trace both before and after the disconnect handler, which
|
||||||
|
gets called every time a boot client asks something of us through by
|
||||||
|
calling /sbin/plymouth leads to a lot of not really informative messages
|
||||||
|
in the debug-log.
|
||||||
|
|
||||||
|
This removes the 2 ply_trace calls around the disconnect handlers to make
|
||||||
|
the logs easier to read.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/libply/ply-event-loop.c | 8 +-------
|
||||||
|
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/libply/ply-event-loop.c b/src/libply/ply-event-loop.c
|
||||||
|
index 5eb601c..57751c2 100644
|
||||||
|
--- a/src/libply/ply-event-loop.c
|
||||||
|
+++ b/src/libply/ply-event-loop.c
|
||||||
|
@@ -1061,15 +1061,9 @@ ply_event_loop_handle_disconnect_for_source (ply_event_loop_t *loop,
|
||||||
|
destination = (ply_event_destination_t *) ply_list_node_get_data (node);
|
||||||
|
next_node = ply_list_get_next_node (source->destinations, node);
|
||||||
|
|
||||||
|
- if (destination->disconnected_handler != NULL) {
|
||||||
|
- ply_trace ("calling disconnected_handler %p for fd %d",
|
||||||
|
- destination->disconnected_handler, source->fd);
|
||||||
|
+ if (destination->disconnected_handler != NULL)
|
||||||
|
destination->disconnected_handler (destination->user_data, source->fd);
|
||||||
|
|
||||||
|
- ply_trace ("done calling disconnected_handler %p for fd %d",
|
||||||
|
- destination->disconnected_handler, source->fd);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
node = next_node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
170
0006-two-step-Add-UseEndAnimation-setting.patch
Normal file
170
0006-two-step-Add-UseEndAnimation-setting.patch
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
From aba38f13c1af535efefb09683ced0920600e7dde Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 22:03:58 +0100
|
||||||
|
Subject: [PATCH 6/7] two-step: Add UseEndAnimation setting
|
||||||
|
|
||||||
|
We try to start the end animation early based on our progress accounting
|
||||||
|
but this is highly unreliable because e.g.:
|
||||||
|
-It counts time to enter the diskcrypt passwd as normal boot time, while
|
||||||
|
this varies wildly from boot to boot
|
||||||
|
-Boot times for laptops can differ significantly between docked / undocked
|
||||||
|
state
|
||||||
|
|
||||||
|
Between gdm calling /bin/plymouth deactivate and the drm plugin's deactivate
|
||||||
|
method getting called there can be e.g. 2.1 seconds (from a random boot),
|
||||||
|
with a theoretical maximum of 3 seconds (2 seconds to finish the throbber +
|
||||||
|
1 second for the end animation).
|
||||||
|
|
||||||
|
On a modern system userland boot should be able to finish in say 5 seconds,
|
||||||
|
making gdm wait an additional 1 - 3 seconds for deactivation is a huge amount
|
||||||
|
of extra wait time!
|
||||||
|
|
||||||
|
This commit adds a new "UseEndAnimation" option to the two-step plugin,
|
||||||
|
which defaults to true. Setting this to false makes deactivation immediate.
|
||||||
|
|
||||||
|
This works nicely with the spinner (and bgrt) themes since we do not really
|
||||||
|
do anything special in the end animation there anyways and since we fade-over
|
||||||
|
into gdm things will still look ok, while shaving a signifcant chunk of our
|
||||||
|
boot time.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/plugins/splash/two-step/plugin.c | 42 +++++++++++++++++++++++++---
|
||||||
|
themes/bgrt/bgrt.plymouth.in | 3 ++
|
||||||
|
themes/spinner/spinner.plymouth.in | 9 ++++++
|
||||||
|
3 files changed, 50 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c
|
||||||
|
index 3dfb011..964855c 100644
|
||||||
|
--- a/src/plugins/splash/two-step/plugin.c
|
||||||
|
+++ b/src/plugins/splash/two-step/plugin.c
|
||||||
|
@@ -121,6 +121,7 @@ typedef struct
|
||||||
|
bool progress_bar_show_percent_complete;
|
||||||
|
bool use_progress_bar;
|
||||||
|
bool use_animation;
|
||||||
|
+ bool use_end_animation;
|
||||||
|
bool use_firmware_background;
|
||||||
|
char *title;
|
||||||
|
char *subtitle;
|
||||||
|
@@ -262,12 +263,13 @@ view_free (view_t *view)
|
||||||
|
static void
|
||||||
|
view_load_end_animation (view_t *view)
|
||||||
|
{
|
||||||
|
+ ply_boot_splash_plugin_t *plugin = view->plugin;
|
||||||
|
const char *animation_prefix;
|
||||||
|
- ply_boot_splash_plugin_t *plugin;
|
||||||
|
|
||||||
|
- ply_trace ("loading animation");
|
||||||
|
+ if (!plugin->mode_settings[plugin->mode].use_end_animation)
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
- plugin = view->plugin;
|
||||||
|
+ ply_trace ("loading animation");
|
||||||
|
|
||||||
|
switch (plugin->mode) {
|
||||||
|
case PLY_BOOT_SPLASH_MODE_BOOT_UP:
|
||||||
|
@@ -315,6 +317,7 @@ view_load_end_animation (view_t *view)
|
||||||
|
ply_trace ("optional animation didn't load");
|
||||||
|
ply_animation_free (view->end_animation);
|
||||||
|
view->end_animation = NULL;
|
||||||
|
+ plugin->mode_settings[plugin->mode].use_end_animation = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
@@ -995,6 +998,13 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin,
|
||||||
|
else
|
||||||
|
settings->use_animation = !settings->use_progress_bar;
|
||||||
|
|
||||||
|
+ /* This defaults to true for compat. with older themes */
|
||||||
|
+ if (ply_key_file_has_key (key_file, group_name, "UseEndAnimation"))
|
||||||
|
+ settings->use_end_animation =
|
||||||
|
+ ply_key_file_get_bool (key_file, group_name, "UseEndAnimation");
|
||||||
|
+ else
|
||||||
|
+ settings->use_end_animation = true;
|
||||||
|
+
|
||||||
|
/* If any mode uses the firmware background, then we need to load it */
|
||||||
|
if (settings->use_firmware_background)
|
||||||
|
plugin->use_firmware_background = true;
|
||||||
|
@@ -1260,6 +1270,25 @@ start_end_animation (ply_boot_splash_plugin_t *plugin,
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (!plugin->mode_settings[plugin->mode].use_end_animation) {
|
||||||
|
+ node = ply_list_get_first_node (plugin->views);
|
||||||
|
+ while (node != NULL) {
|
||||||
|
+ view = ply_list_node_get_data (node);
|
||||||
|
+
|
||||||
|
+ ply_progress_bar_hide (view->progress_bar);
|
||||||
|
+
|
||||||
|
+ if (view->throbber != NULL)
|
||||||
|
+ ply_throbber_stop (view->throbber, NULL);
|
||||||
|
+
|
||||||
|
+ if (view->progress_animation != NULL)
|
||||||
|
+ ply_progress_animation_hide (view->progress_animation);
|
||||||
|
+
|
||||||
|
+ node = ply_list_get_next_node (plugin->views, node);
|
||||||
|
+ }
|
||||||
|
+ ply_trigger_pull (trigger, NULL);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ply_trace ("starting end animation");
|
||||||
|
|
||||||
|
node = ply_list_get_first_node (plugin->views);
|
||||||
|
@@ -1718,7 +1747,12 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin,
|
||||||
|
if (plugin->is_idle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (percent_done >= SHOW_ANIMATION_PERCENT) {
|
||||||
|
+ /*
|
||||||
|
+ * If we do not have an end animation, we keep showing progress until
|
||||||
|
+ * become_idle gets called.
|
||||||
|
+ */
|
||||||
|
+ if (plugin->mode_settings[plugin->mode].use_end_animation &&
|
||||||
|
+ percent_done >= SHOW_ANIMATION_PERCENT) {
|
||||||
|
if (plugin->stop_trigger == NULL) {
|
||||||
|
ply_trace ("boot progressed to end");
|
||||||
|
|
||||||
|
diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in
|
||||||
|
index ac07bc9..994a995 100644
|
||||||
|
--- a/themes/bgrt/bgrt.plymouth.in
|
||||||
|
+++ b/themes/bgrt/bgrt.plymouth.in
|
||||||
|
@@ -25,12 +25,15 @@ DialogClearsFirmwareBackground=true
|
||||||
|
MessageBelowAnimation=true
|
||||||
|
|
||||||
|
[boot-up]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
UseFirmwareBackground=true
|
||||||
|
|
||||||
|
[shutdown]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
UseFirmwareBackground=true
|
||||||
|
|
||||||
|
[reboot]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
UseFirmwareBackground=true
|
||||||
|
|
||||||
|
[updates]
|
||||||
|
diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in
|
||||||
|
index 5e5078e..88121c5 100644
|
||||||
|
--- a/themes/spinner/spinner.plymouth.in
|
||||||
|
+++ b/themes/spinner/spinner.plymouth.in
|
||||||
|
@@ -23,6 +23,15 @@ ProgressBarBackgroundColor=0x606060
|
||||||
|
ProgressBarForegroundColor=0xffffff
|
||||||
|
MessageBelowAnimation=true
|
||||||
|
|
||||||
|
+[boot-up]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
+
|
||||||
|
+[shutdown]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
+
|
||||||
|
+[reboot]
|
||||||
|
+UseEndAnimation=false
|
||||||
|
+
|
||||||
|
[updates]
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From a575605b7dd835bab626f07ff37f283049da7b3c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Tue, 18 Feb 2020 22:38:06 +0100
|
||||||
|
Subject: [PATCH 7/7] themes: Drop UseFirmwareBackground=true from spinner/bgrt
|
||||||
|
firmware-upgrade settings
|
||||||
|
|
||||||
|
The spinner theme should never have UseFirmwareBackground=true and in the
|
||||||
|
bgrt case we should not use it for modes which set a Title as the Title
|
||||||
|
location will conflict with the firmware background vendor logo.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
themes/bgrt/bgrt.plymouth.in | 1 -
|
||||||
|
themes/spinner/spinner.plymouth.in | 1 -
|
||||||
|
2 files changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in
|
||||||
|
index 994a995..5455eb7 100644
|
||||||
|
--- a/themes/bgrt/bgrt.plymouth.in
|
||||||
|
+++ b/themes/bgrt/bgrt.plymouth.in
|
||||||
|
@@ -54,6 +54,5 @@ _SubTitle=Do not turn off your computer
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
UseProgressBar=true
|
||||||
|
-UseFirmwareBackground=true
|
||||||
|
_Title=Upgrading Firmware...
|
||||||
|
_SubTitle=Do not turn off your computer
|
||||||
|
diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in
|
||||||
|
index 88121c5..0687d12 100644
|
||||||
|
--- a/themes/spinner/spinner.plymouth.in
|
||||||
|
+++ b/themes/spinner/spinner.plymouth.in
|
||||||
|
@@ -50,6 +50,5 @@ _SubTitle=Do not turn off your computer
|
||||||
|
SuppressMessages=true
|
||||||
|
ProgressBarShowPercentComplete=true
|
||||||
|
UseProgressBar=true
|
||||||
|
-UseFirmwareBackground=true
|
||||||
|
_Title=Upgrading Firmware...
|
||||||
|
_SubTitle=Do not turn off your computer
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -8,3 +8,5 @@ addFilter("non-readable")
|
|||||||
# Upstream (and RHEL) has named the logrotate file after the logfilename
|
# Upstream (and RHEL) has named the logrotate file after the logfilename
|
||||||
# rather then after the package-name
|
# rather then after the package-name
|
||||||
addFilter("incoherent-logrotate-file")
|
addFilter("incoherent-logrotate-file")
|
||||||
|
# No provides, the throbgress plugin has been removed upstream
|
||||||
|
addFilter("W: obsolete-not-provided plymouth-plugin-throbgress")
|
@ -1,11 +1,11 @@
|
|||||||
%global commit 32c097cbcae1d106db4a75337a78310ad22267be
|
%global commit 58a728982cfa911a06326620a599333aea38960e
|
||||||
%global commitdate 20191022
|
%global commitdate 20200306
|
||||||
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||||
|
|
||||||
Summary: Graphical Boot Animation and Logger
|
Summary: Graphical Boot Animation and Logger
|
||||||
Name: plymouth
|
Name: plymouth
|
||||||
Version: 0.9.4
|
Version: 0.9.4
|
||||||
Release: 12.%{commitdate}git%{shortcommit}%{?dist}
|
Release: 13.%{commitdate}git%{shortcommit}%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.freedesktop.org/wiki/Software/Plymouth
|
URL: http://www.freedesktop.org/wiki/Software/Plymouth
|
||||||
|
|
||||||
@ -16,7 +16,21 @@ Source2: charge.plymouth
|
|||||||
# but we really do not want to change soname in Fedora during a cycle.
|
# but we really do not want to change soname in Fedora during a cycle.
|
||||||
# The only libply* user in Fedora outside this pkg is plymouth-theme-breeze
|
# The only libply* user in Fedora outside this pkg is plymouth-theme-breeze
|
||||||
# and that does not need the removed symbols.
|
# and that does not need the removed symbols.
|
||||||
Patch1: 0001-Revert-configure-bump-so-name.patch
|
Patch0: 0001-Revert-configure-bump-so-name.patch
|
||||||
|
|
||||||
|
# Patches pending upstream
|
||||||
|
# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/92
|
||||||
|
# For rhbz 1810070
|
||||||
|
Patch1: 0001-ply-capslock-icon-Do-not-draw-on-free.patch
|
||||||
|
Patch2: 0002-ply-keymap-icon-Do-not-draw-on-free.patch
|
||||||
|
Patch3: 0003-ply-throbber-Do-not-redraw-when-we-need-to-stop-thro.patch
|
||||||
|
# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/93
|
||||||
|
Patch4: 0004-event-loop-Fix-debug-log-failed-to-delete-fd-from-ep.patch
|
||||||
|
Patch5: 0005-event-loop-Remove-ply_trace-calls-around-the-disconn.patch
|
||||||
|
# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/94
|
||||||
|
Patch6: 0006-two-step-Add-UseEndAnimation-setting.patch
|
||||||
|
# https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/95
|
||||||
|
Patch7: 0007-themes-Drop-UseFirmwareBackground-true-from-spinner-.patch
|
||||||
|
|
||||||
BuildRequires: gcc libtool git
|
BuildRequires: gcc libtool git
|
||||||
BuildRequires: pkgconfig(libdrm)
|
BuildRequires: pkgconfig(libdrm)
|
||||||
@ -129,24 +143,14 @@ This package contains the "space-flares" boot splash plugin for
|
|||||||
Plymouth. It features a corner image with animated flares.
|
Plymouth. It features a corner image with animated flares.
|
||||||
|
|
||||||
|
|
||||||
%package plugin-throbgress
|
|
||||||
Summary: Plymouth "Throbgress" plugin
|
|
||||||
Requires: %{name} = %{version}-%{release}
|
|
||||||
Requires: %{name}-graphics-libs = %{version}-%{release}
|
|
||||||
Requires: plymouth-plugin-label = %{version}-%{release}
|
|
||||||
|
|
||||||
%description plugin-throbgress
|
|
||||||
This package contains the "throbgress" boot splash plugin for
|
|
||||||
Plymouth. It features a centered logo and animated spinner that
|
|
||||||
spins repeatedly while a progress bar advances at the bottom of
|
|
||||||
the screen.
|
|
||||||
|
|
||||||
|
|
||||||
%package plugin-two-step
|
%package plugin-two-step
|
||||||
Summary: Plymouth "two-step" plugin
|
Summary: Plymouth "two-step" plugin
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Requires: %{name}-graphics-libs = %{version}-%{release}
|
Requires: %{name}-graphics-libs = %{version}-%{release}
|
||||||
Requires: plymouth-plugin-label = %{version}-%{release}
|
Requires: plymouth-plugin-label = %{version}-%{release}
|
||||||
|
# Spinifinity like themes should now use two-step instead of throbgress
|
||||||
|
# No provides, the throbgress plugin has been removed upstream
|
||||||
|
Obsoletes: %{name}-plugin-throbgress < %{version}-%{release}
|
||||||
|
|
||||||
%description plugin-two-step
|
%description plugin-two-step
|
||||||
This package contains the "two-step" boot splash plugin for
|
This package contains the "two-step" boot splash plugin for
|
||||||
@ -200,7 +204,7 @@ Plymouth. It features a blue flamed sun with animated solar flares.
|
|||||||
|
|
||||||
%package theme-spinfinity
|
%package theme-spinfinity
|
||||||
Summary: Plymouth "Spinfinity" theme
|
Summary: Plymouth "Spinfinity" theme
|
||||||
Requires: %{name}-plugin-throbgress = %{version}-%{release}
|
Requires: %{name}-plugin-two-step = %{version}-%{release}
|
||||||
Requires(post): plymouth-scripts
|
Requires(post): plymouth-scripts
|
||||||
|
|
||||||
%description theme-spinfinity
|
%description theme-spinfinity
|
||||||
@ -222,7 +226,7 @@ Plymouth. It features a small spinner on a dark background.
|
|||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -n %{name}-%{commit}
|
%autosetup -p1 -n %{name}-%{commit}
|
||||||
autoreconf --install --symlink -Wno-portability
|
autoreconf --install --symlink -Wno-portability
|
||||||
# Change the default theme
|
# Change the default theme
|
||||||
sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults
|
sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults
|
||||||
@ -380,9 +384,6 @@ fi
|
|||||||
%files plugin-space-flares
|
%files plugin-space-flares
|
||||||
%{_libdir}/plymouth/space-flares.so
|
%{_libdir}/plymouth/space-flares.so
|
||||||
|
|
||||||
%files plugin-throbgress
|
|
||||||
%{_libdir}/plymouth/throbgress.so
|
|
||||||
|
|
||||||
%files plugin-two-step
|
%files plugin-two-step
|
||||||
%{_libdir}/plymouth/two-step.so
|
%{_libdir}/plymouth/two-step.so
|
||||||
|
|
||||||
@ -410,6 +411,13 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Mar 9 2020 Hans de Goede <jwrdegoede@fedoraproject.org> - 0.9.4-13.20200306git58a7289
|
||||||
|
- Add patches fixing crash on monitor hot(un)plug (rhbz#1809681)
|
||||||
|
- Add patches fixing delay between gdm telling us to deactivate and
|
||||||
|
us telling gdm it is ok to continue
|
||||||
|
- Drop plymouth-plugin-throbgress sub-package, the spinfinity theme now
|
||||||
|
uses the two-step plugin
|
||||||
|
|
||||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.4-12.20191022git32c097c
|
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.4-12.20191022git32c097c
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (plymouth-32c097c.tar.gz) = 479d9a7b27ad676fb3ce118269da947ebb95c2d7800945ea261d8aa70d0456ad51d51d5294b7d1a4d0ee87e248b6d3ff68334e4f9d3297ecda0c8131a44da979
|
SHA512 (plymouth-58a7289.tar.gz) = e3d8daebc24f8c53ea1de819170a4ba9842ec1a98904243802e1f15b51b6aa234ef8d22db44b90b8fa42af960e2c71207b3e326c389c12d83327655149e84b2a
|
||||||
|
Loading…
Reference in New Issue
Block a user