Compare commits
1 Commits
70298f419d
...
26a1fb45ba
Author | SHA1 | Date | |
---|---|---|---|
|
26a1fb45ba |
@ -1,167 +0,0 @@
|
|||||||
From c42ff26b3dd3afa520946b1e28716055134cab50 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
|
||||||
Date: Tue, 30 Aug 2022 14:41:36 -0400
|
|
||||||
Subject: [PATCH] details: Don't replay boot buffer on serial consoles
|
|
||||||
|
|
||||||
commit 0e59dde8 changed the details plugin to clear the terminal when
|
|
||||||
first opening it. This was done to prevent duplicate messages from
|
|
||||||
showing up when toggling back and forth between details and graphical
|
|
||||||
splashes.
|
|
||||||
|
|
||||||
That has the negative side effect of purging serial console output too
|
|
||||||
though. Furthermore, it makes little sense to replay the boot buffer
|
|
||||||
on serial consoles, since serial consoles don't aggressively purge
|
|
||||||
scrollback like VTs do.
|
|
||||||
|
|
||||||
This commit adds a check to make sure the terminal is a VT before trying
|
|
||||||
to clear and replay the scrollback buffer.
|
|
||||||
|
|
||||||
Closes: https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/187
|
|
||||||
---
|
|
||||||
src/plugins/splash/details/plugin.c | 38 ++++++++++++++++++++---------
|
|
||||||
1 file changed, 27 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/plugins/splash/details/plugin.c b/src/plugins/splash/details/plugin.c
|
|
||||||
index 254f682b..140fb282 100644
|
|
||||||
--- a/src/plugins/splash/details/plugin.c
|
|
||||||
+++ b/src/plugins/splash/details/plugin.c
|
|
||||||
@@ -175,109 +175,125 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin)
|
|
||||||
detach_from_event_loop,
|
|
||||||
plugin);
|
|
||||||
detach_from_event_loop (plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
free_messages (plugin);
|
|
||||||
free_views (plugin);
|
|
||||||
|
|
||||||
free (plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
detach_from_event_loop (ply_boot_splash_plugin_t *plugin)
|
|
||||||
{
|
|
||||||
plugin->loop = NULL;
|
|
||||||
|
|
||||||
ply_trace ("detaching from event loop");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
view_write (view_t *view,
|
|
||||||
const char *text,
|
|
||||||
size_t number_of_bytes)
|
|
||||||
{
|
|
||||||
ply_terminal_t *terminal;
|
|
||||||
|
|
||||||
terminal = ply_text_display_get_terminal (view->display);
|
|
||||||
ply_terminal_write (terminal, "%.*s", (int) number_of_bytes, text);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void
|
|
||||||
+view_write_boot_buffer (view_t *view)
|
|
||||||
+{
|
|
||||||
+ ply_boot_splash_plugin_t *plugin;
|
|
||||||
+ ply_terminal_t *terminal;
|
|
||||||
+
|
|
||||||
+ plugin = view->plugin;
|
|
||||||
+
|
|
||||||
+ terminal = ply_text_display_get_terminal (view->display);
|
|
||||||
+
|
|
||||||
+ ply_text_display_clear_screen (view->display);
|
|
||||||
+ ply_terminal_activate_vt (terminal);
|
|
||||||
+
|
|
||||||
+ if (plugin->boot_buffer != NULL) {
|
|
||||||
+ size_t size;
|
|
||||||
+ const char *bytes;
|
|
||||||
+
|
|
||||||
+ size = ply_buffer_get_size (plugin->boot_buffer);
|
|
||||||
+ bytes = ply_buffer_get_bytes (plugin->boot_buffer);
|
|
||||||
+ view_write (view, bytes, size);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
write_on_views (ply_boot_splash_plugin_t *plugin,
|
|
||||||
const char *text,
|
|
||||||
size_t number_of_bytes)
|
|
||||||
{
|
|
||||||
ply_list_node_t *node;
|
|
||||||
|
|
||||||
if (number_of_bytes == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
node = ply_list_get_first_node (plugin->views);
|
|
||||||
|
|
||||||
while (node != NULL) {
|
|
||||||
ply_list_node_t *next_node;
|
|
||||||
view_t *view;
|
|
||||||
|
|
||||||
view = ply_list_node_get_data (node);
|
|
||||||
next_node = ply_list_get_next_node (plugin->views, node);
|
|
||||||
|
|
||||||
view_write (view, text, number_of_bytes);
|
|
||||||
|
|
||||||
node = next_node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_text_display (ply_boot_splash_plugin_t *plugin,
|
|
||||||
ply_text_display_t *display)
|
|
||||||
{
|
|
||||||
view_t *view;
|
|
||||||
ply_terminal_t *terminal;
|
|
||||||
|
|
||||||
view = view_new (plugin, display);
|
|
||||||
|
|
||||||
terminal = ply_text_display_get_terminal (view->display);
|
|
||||||
- if (ply_terminal_open (terminal)) {
|
|
||||||
- ply_text_display_clear_screen (view->display);
|
|
||||||
- ply_terminal_activate_vt (terminal);
|
|
||||||
- }
|
|
||||||
|
|
||||||
- ply_list_append_data (plugin->views, view);
|
|
||||||
+ ply_terminal_open (terminal);
|
|
||||||
|
|
||||||
- if (plugin->boot_buffer != NULL) {
|
|
||||||
- size_t size;
|
|
||||||
- const char *bytes;
|
|
||||||
+ ply_list_append_data (plugin->views, view);
|
|
||||||
|
|
||||||
- size = ply_buffer_get_size (plugin->boot_buffer);
|
|
||||||
- bytes = ply_buffer_get_bytes (plugin->boot_buffer);
|
|
||||||
- view_write (view, bytes, size);
|
|
||||||
+ if (ply_terminal_is_vt (terminal)) {
|
|
||||||
+ view_write_boot_buffer (view);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
remove_text_display (ply_boot_splash_plugin_t *plugin,
|
|
||||||
ply_text_display_t *display)
|
|
||||||
{
|
|
||||||
ply_list_node_t *node;
|
|
||||||
|
|
||||||
node = ply_list_get_first_node (plugin->views);
|
|
||||||
while (node != NULL) {
|
|
||||||
view_t *view;
|
|
||||||
ply_list_node_t *next_node;
|
|
||||||
|
|
||||||
view = ply_list_node_get_data (node);
|
|
||||||
next_node = ply_list_get_next_node (plugin->views, node);
|
|
||||||
|
|
||||||
if (view->display == display) {
|
|
||||||
ply_list_remove_node (plugin->views, node);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
node = next_node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
show_splash_screen (ply_boot_splash_plugin_t *plugin,
|
|
||||||
ply_event_loop_t *loop,
|
|
||||||
ply_buffer_t *boot_buffer,
|
|
||||||
--
|
|
||||||
2.41.0.rc2
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
Summary: Graphical Boot Animation and Logger
|
Summary: Graphical Boot Animation and Logger
|
||||||
Name: plymouth
|
Name: plymouth
|
||||||
Version: 0.9.5
|
Version: 0.9.5
|
||||||
Release: 7.%{commitdate}git%{shortcommit}%{?dist}
|
Release: 6.%{commitdate}git%{shortcommit}%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.freedesktop.org/wiki/Software/Plymouth
|
URL: http://www.freedesktop.org/wiki/Software/Plymouth
|
||||||
|
|
||||||
@ -14,24 +14,20 @@ Source0: https://gitlab.freedesktop.org/jwrdegoede/plymouth/-/archive/%{commit}/
|
|||||||
#Source0: https://gitlab.freedesktop.org/plymouth/plymouth/-/archive/%%{commit}/%%{name}-%%{shortcommit}.tar.gz
|
#Source0: https://gitlab.freedesktop.org/plymouth/plymouth/-/archive/%%{commit}/%%{name}-%%{shortcommit}.tar.gz
|
||||||
Source2: charge.plymouth
|
Source2: charge.plymouth
|
||||||
|
|
||||||
Patch: 0001-ply-utils-Reintroduce-ply_string_has_prefix-helper.patch
|
Patch10001: 0001-ply-utils-Reintroduce-ply_string_has_prefix-helper.patch
|
||||||
Patch: 0002-ply-device-manager-Treat-SimpleDRM-drm-devices-as-fb.patch
|
Patch10002: 0002-ply-device-manager-Treat-SimpleDRM-drm-devices-as-fb.patch
|
||||||
Patch: 0003-ply-device-manager-Move-verify_drm_device-higher-up-.patch
|
Patch10003: 0003-ply-device-manager-Move-verify_drm_device-higher-up-.patch
|
||||||
Patch: 0004-ply-device-manager-Remove-unnecessary-subsystem-NULL.patch
|
Patch10004: 0004-ply-device-manager-Remove-unnecessary-subsystem-NULL.patch
|
||||||
Patch: 0005-ply-device-manager-verify_add_or_change-Move-local_c.patch
|
Patch10005: 0005-ply-device-manager-verify_add_or_change-Move-local_c.patch
|
||||||
Patch: 0006-ply-device-manager-verify_add_or_change-Move-local_c.patch
|
Patch10006: 0006-ply-device-manager-verify_add_or_change-Move-local_c.patch
|
||||||
|
|
||||||
# Upstream has bumped the soname because some obscure symbols were dropped,
|
# Upstream has bumped the soname because some obscure symbols were dropped,
|
||||||
# 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.
|
||||||
Patch: 0001-Revert-configure-bump-so-name.patch
|
Patch6660001: 0001-Revert-configure-bump-so-name.patch
|
||||||
|
|
||||||
# Only replay scrollback buffer on VT, not serial console
|
Patch9999001: ship-label-plugin-in-initrd.patch
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2032540
|
|
||||||
Patch: 0001-details-Don-t-replay-boot-buffer-on-serial-consoles.patch
|
|
||||||
|
|
||||||
Patch: ship-label-plugin-in-initrd.patch
|
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: gcc libtool git
|
BuildRequires: gcc libtool git
|
||||||
@ -414,11 +410,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Jul 14 2023 Ray Strode <rstrode@redhat.com> - 0.9.5-7.20210331git1ea1020
|
* Wed Nov 16 2022 Ray Strode <rstrode@redhat.com> - 0.9.5-6.20210331git%(c=%{commit}; echo ${c:0:7})
|
||||||
- Only replay scrollback buffer on VT, not serial console
|
|
||||||
Resolves: #2032540
|
|
||||||
|
|
||||||
* Wed Nov 16 2022 Ray Strode <rstrode@redhat.com> - 0.9.5-6.20210331git1ea1020
|
|
||||||
- Backport simpledrm patches from upstream
|
- Backport simpledrm patches from upstream
|
||||||
Resolves: #2104910
|
Resolves: #2104910
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user