From 1628320b093e3605e91f0aa7183b6859920a0a85 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Thu, 6 Feb 2014 14:42:40 -0500
Subject: [PATCH 1/2] main: don't nullify local_console_terminal in quit_splash
quit_splash gets called on hide-splash so nullify the terminal
will make it unavailable on later show-splash calls.
---
src/main.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main.c b/src/main.c
index 91e0649..1f9f6dd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1042,61 +1042,60 @@ load_devices (state_t *state,
{
state->device_manager = ply_device_manager_new (state->default_tty, flags);
state->local_console_terminal = ply_device_manager_get_default_terminal (state->device_manager);
ply_device_manager_watch_seats (state->device_manager,
(ply_seat_added_handler_t)
on_seat_added,
(ply_seat_removed_handler_t)
on_seat_removed,
state);
}
static void
quit_splash (state_t *state)
{
ply_trace ("quiting splash");
if (state->boot_splash != NULL)
{
ply_trace ("freeing splash");
ply_boot_splash_free (state->boot_splash);
state->boot_splash = NULL;
}
if (state->local_console_terminal != NULL)
{
if (!state->should_retain_splash)
{
ply_trace ("Not retaining splash, so deallocating VT");
ply_terminal_deactivate_vt (state->local_console_terminal);
}
- state->local_console_terminal = NULL;
}
detach_from_running_session (state);
}
static void
hide_splash (state_t *state)
{
state->is_shown = false;
cancel_pending_delayed_show (state);
if (state->boot_splash == NULL)
return;
ply_boot_splash_hide (state->boot_splash);
if (state->local_console_terminal != NULL)
ply_terminal_set_mode (state->local_console_terminal, PLY_TERMINAL_MODE_TEXT);
}
static void
dump_details_and_quit_splash (state_t *state)
{
state->showing_details = false;
toggle_between_splash_and_details (state);
ply_device_manager_deactivate_renderers (state->device_manager);
hide_splash (state);
quit_splash (state);
--
1.8.3.1
From fea0252399bf9d13e88b27b7296f263732f180fc Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Thu, 6 Feb 2014 15:22:54 -0500
Subject: [PATCH 2/2] main: detach from keyboard on hide-splash
Currently plymouth stays in control of the terminal
after hide-splash. This is wrong. Once plymouth is
hidden, the terminal should be free to use for other
programs.
This commit makes sure we free up the terminal on
hide splash.
---
src/main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main.c b/src/main.c
index 1f9f6dd..92a1cfd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1035,66 +1035,69 @@ on_seat_added (state_t *state,
on_enter, state);
}
static void
load_devices (state_t *state,
ply_device_manager_flags_t flags)
{
state->device_manager = ply_device_manager_new (state->default_tty, flags);
state->local_console_terminal = ply_device_manager_get_default_terminal (state->device_manager);
ply_device_manager_watch_seats (state->device_manager,
(ply_seat_added_handler_t)
on_seat_added,
(ply_seat_removed_handler_t)
on_seat_removed,
state);
}
static void
quit_splash (state_t *state)
{
ply_trace ("quiting splash");
if (state->boot_splash != NULL)
{
ply_trace ("freeing splash");
ply_boot_splash_free (state->boot_splash);
state->boot_splash = NULL;
}
+ ply_device_manager_deactivate_keyboards (state->device_manager);
+
if (state->local_console_terminal != NULL)
{
if (!state->should_retain_splash)
{
ply_trace ("Not retaining splash, so deallocating VT");
ply_terminal_deactivate_vt (state->local_console_terminal);
+ ply_terminal_close (state->local_console_terminal);
}
}
detach_from_running_session (state);
}
static void
hide_splash (state_t *state)
{
state->is_shown = false;
cancel_pending_delayed_show (state);
if (state->boot_splash == NULL)
return;
ply_boot_splash_hide (state->boot_splash);
if (state->local_console_terminal != NULL)
ply_terminal_set_mode (state->local_console_terminal, PLY_TERMINAL_MODE_TEXT);
}
static void
dump_details_and_quit_splash (state_t *state)
{
state->showing_details = false;
toggle_between_splash_and_details (state);
ply_device_manager_deactivate_renderers (state->device_manager);
hide_splash (state);
--
1.8.3.1