|
|
1fa1a8c |
From 288c110fa1e35b0bf32f0e3480cf677e83a5bc23 Mon Sep 17 00:00:00 2001
|
|
|
1fa1a8c |
From: Ray Strode <rstrode@redhat.com>
|
|
|
1fa1a8c |
Date: Thu, 8 Oct 2009 15:22:27 -0400
|
|
|
1fa1a8c |
Subject: [PATCH 1/4] [main] Disconnect from tty when hiding splash
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
We were still processing keystrokes when the splash screen was
|
|
|
1fa1a8c |
hidden. This caused problems because the tty is used by other
|
|
|
1fa1a8c |
programs at that time.
|
|
|
1fa1a8c |
---
|
|
|
1fa1a8c |
src/main.c | 2 ++
|
|
|
1fa1a8c |
1 files changed, 2 insertions(+), 0 deletions(-)
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
diff --git a/src/main.c b/src/main.c
|
|
|
1fa1a8c |
index 31f2b1e..6f8c6bd 100644
|
|
|
1fa1a8c |
--- a/src/main.c
|
|
|
1fa1a8c |
+++ b/src/main.c
|
|
|
1fa1a8c |
@@ -549,6 +549,8 @@ remove_displays_and_keyboard (state_t *state)
|
|
|
1fa1a8c |
node = next_node;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
+ ply_keyboard_stop_watching_for_input (state->keyboard);
|
|
|
1fa1a8c |
+ ply_keyboard_free (state->keyboard);
|
|
|
1fa1a8c |
state->keyboard = NULL;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
--
|
|
|
1fa1a8c |
1.6.5.rc2
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
From d8835ebfd35724dd12ec6e6a4c7b303996a37066 Mon Sep 17 00:00:00 2001
|
|
|
1fa1a8c |
From: Ray Strode <rstrode@redhat.com>
|
|
|
1fa1a8c |
Date: Thu, 8 Oct 2009 15:33:40 -0400
|
|
|
1fa1a8c |
Subject: [PATCH 2/4] [terminal] Only close terminal on free when open
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
We were closing the terminal twice, causing assertions
|
|
|
1fa1a8c |
to blow.
|
|
|
1fa1a8c |
---
|
|
|
1fa1a8c |
src/libplybootsplash/ply-terminal.c | 3 ++-
|
|
|
1fa1a8c |
1 files changed, 2 insertions(+), 1 deletions(-)
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
diff --git a/src/libplybootsplash/ply-terminal.c b/src/libplybootsplash/ply-terminal.c
|
|
|
1fa1a8c |
index 462a4c6..8147e86 100644
|
|
|
1fa1a8c |
--- a/src/libplybootsplash/ply-terminal.c
|
|
|
1fa1a8c |
+++ b/src/libplybootsplash/ply-terminal.c
|
|
|
1fa1a8c |
@@ -499,7 +499,8 @@ ply_terminal_free (ply_terminal_t *terminal)
|
|
|
1fa1a8c |
ply_terminal_detach_from_event_loop,
|
|
|
1fa1a8c |
terminal);
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
- ply_terminal_close (terminal);
|
|
|
1fa1a8c |
+ if (terminal->is_open)
|
|
|
1fa1a8c |
+ ply_terminal_close (terminal);
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
free (terminal);
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
--
|
|
|
1fa1a8c |
1.6.5.rc2
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
From 78d610e82a9eebdce7ab43a6e3acfee1057f6a2c Mon Sep 17 00:00:00 2001
|
|
|
1fa1a8c |
From: Ray Strode <rstrode@redhat.com>
|
|
|
1fa1a8c |
Date: Thu, 8 Oct 2009 15:40:16 -0400
|
|
|
1fa1a8c |
Subject: [PATCH 3/4] [main] remove displays before closing renderer
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
---
|
|
|
1fa1a8c |
src/main.c | 6 +++---
|
|
|
1fa1a8c |
1 files changed, 3 insertions(+), 3 deletions(-)
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
diff --git a/src/main.c b/src/main.c
|
|
|
1fa1a8c |
index 6f8c6bd..c309fab 100644
|
|
|
1fa1a8c |
--- a/src/main.c
|
|
|
1fa1a8c |
+++ b/src/main.c
|
|
|
1fa1a8c |
@@ -604,6 +604,9 @@ quit_splash (state_t *state)
|
|
|
1fa1a8c |
state->boot_splash = NULL;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
+ ply_trace ("removing displays and keyboard");
|
|
|
1fa1a8c |
+ remove_displays_and_keyboard (state);
|
|
|
1fa1a8c |
+
|
|
|
1fa1a8c |
if (state->renderer != NULL)
|
|
|
1fa1a8c |
{
|
|
|
1fa1a8c |
ply_renderer_close (state->renderer);
|
|
|
1fa1a8c |
@@ -618,9 +621,6 @@ quit_splash (state_t *state)
|
|
|
1fa1a8c |
state->terminal = NULL;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
- ply_trace ("removing displays and keyboard");
|
|
|
1fa1a8c |
- remove_displays_and_keyboard (state);
|
|
|
1fa1a8c |
-
|
|
|
1fa1a8c |
if (state->session != NULL)
|
|
|
1fa1a8c |
{
|
|
|
1fa1a8c |
ply_trace ("detaching session");
|
|
|
1fa1a8c |
--
|
|
|
1fa1a8c |
1.6.5.rc2
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
From e938daa05b05d5517cec61fab7caf0df75e5fa14 Mon Sep 17 00:00:00 2001
|
|
|
1fa1a8c |
From: Ray Strode <rstrode@redhat.com>
|
|
|
1fa1a8c |
Date: Thu, 8 Oct 2009 15:41:06 -0400
|
|
|
1fa1a8c |
Subject: [PATCH 4/4] [renderer] make input_source_close idempotent
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
---
|
|
|
1fa1a8c |
src/libplybootsplash/ply-renderer.c | 12 ++++++++++--
|
|
|
1fa1a8c |
1 files changed, 10 insertions(+), 2 deletions(-)
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
diff --git a/src/libplybootsplash/ply-renderer.c b/src/libplybootsplash/ply-renderer.c
|
|
|
1fa1a8c |
index f7f3c90..0966418 100644
|
|
|
1fa1a8c |
--- a/src/libplybootsplash/ply-renderer.c
|
|
|
1fa1a8c |
+++ b/src/libplybootsplash/ply-renderer.c
|
|
|
1fa1a8c |
@@ -52,6 +52,8 @@ struct _ply_renderer
|
|
|
1fa1a8c |
char *device_name;
|
|
|
1fa1a8c |
ply_terminal_t *terminal;
|
|
|
1fa1a8c |
ply_console_t *console;
|
|
|
1fa1a8c |
+
|
|
|
1fa1a8c |
+ uint32_t input_source_is_open : 1;
|
|
|
1fa1a8c |
};
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
typedef const ply_renderer_plugin_interface_t *
|
|
|
1fa1a8c |
@@ -321,8 +323,10 @@ ply_renderer_open_input_source (ply_renderer_t *renderer,
|
|
|
1fa1a8c |
assert (renderer != NULL);
|
|
|
1fa1a8c |
assert (input_source != NULL);
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
- return renderer->plugin_interface->open_input_source (renderer->backend,
|
|
|
1fa1a8c |
- input_source);
|
|
|
1fa1a8c |
+ renderer->input_source_is_open = renderer->plugin_interface->open_input_source (renderer->backend,
|
|
|
1fa1a8c |
+ input_source);
|
|
|
1fa1a8c |
+
|
|
|
1fa1a8c |
+ return renderer->input_source_is_open;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
void
|
|
|
1fa1a8c |
@@ -347,8 +351,12 @@ ply_renderer_close_input_source (ply_renderer_t *renderer,
|
|
|
1fa1a8c |
assert (renderer != NULL);
|
|
|
1fa1a8c |
assert (input_source != NULL);
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
+ if (!renderer->input_source_is_open)
|
|
|
1fa1a8c |
+ return;
|
|
|
1fa1a8c |
+
|
|
|
1fa1a8c |
renderer->plugin_interface->close_input_source (renderer->backend,
|
|
|
1fa1a8c |
input_source);
|
|
|
1fa1a8c |
+ renderer->input_source_is_open = false;
|
|
|
1fa1a8c |
}
|
|
|
1fa1a8c |
|
|
|
1fa1a8c |
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
|
|
|
1fa1a8c |
--
|
|
|
1fa1a8c |
1.6.5.rc2
|
|
|
1fa1a8c |
|
|
|
24dc014 |
From 30fa8e2d48ab6ea8909a997aa983c475753059b2 Mon Sep 17 00:00:00 2001
|
|
|
24dc014 |
From: Ray Strode <rstrode@redhat.com>
|
|
|
24dc014 |
Date: Thu, 8 Oct 2009 15:42:27 -0400
|
|
|
24dc014 |
Subject: [PATCH] [keyboard] make stop_watching_for_terminal_input idempotent
|
|
|
24dc014 |
|
|
|
24dc014 |
---
|
|
|
24dc014 |
src/libplybootsplash/ply-keyboard.c | 3 +++
|
|
|
24dc014 |
1 files changed, 3 insertions(+), 0 deletions(-)
|
|
|
24dc014 |
|
|
|
24dc014 |
diff --git a/src/libplybootsplash/ply-keyboard.c b/src/libplybootsplash/ply-keyboard.c
|
|
|
24dc014 |
index 375ddd5..ab72823 100644
|
|
|
24dc014 |
--- a/src/libplybootsplash/ply-keyboard.c
|
|
|
24dc014 |
+++ b/src/libplybootsplash/ply-keyboard.c
|
|
|
24dc014 |
@@ -357,6 +357,9 @@ ply_keyboard_watch_for_terminal_input (ply_keyboard_t *keyboard)
|
|
|
24dc014 |
static void
|
|
|
24dc014 |
ply_keyboard_stop_watching_for_terminal_input (ply_keyboard_t *keyboard)
|
|
|
24dc014 |
{
|
|
|
24dc014 |
+ if (keyboard->provider.if_terminal->input_watch == NULL)
|
|
|
24dc014 |
+ return;
|
|
|
24dc014 |
+
|
|
|
24dc014 |
ply_event_loop_stop_watching_fd (keyboard->loop,
|
|
|
24dc014 |
keyboard->provider.if_terminal->input_watch);
|
|
|
24dc014 |
keyboard->provider.if_terminal->input_watch = NULL;
|
|
|
24dc014 |
--
|
|
|
24dc014 |
1.6.5.rc2
|
|
|
24dc014 |
|
|
|
91873e1 |
From adf98f119b5f06c238b86860f690fe2af608d57f Mon Sep 17 00:00:00 2001
|
|
|
91873e1 |
From: Ray Strode <rstrode@redhat.com>
|
|
|
91873e1 |
Date: Tue, 6 Oct 2009 16:47:41 -0400
|
|
|
91873e1 |
Subject: [PATCH] [main] clean up terminal when done with it
|
|
|
91873e1 |
|
|
|
91873e1 |
Before we were relying on the renderer to clean
|
|
|
91873e1 |
up the terminal, which was wrong.
|
|
|
91873e1 |
---
|
|
|
91873e1 |
src/main.c | 12 ++++++++++++
|
|
|
91873e1 |
1 files changed, 12 insertions(+), 0 deletions(-)
|
|
|
91873e1 |
|
|
|
91873e1 |
diff --git a/src/main.c b/src/main.c
|
|
|
91873e1 |
index e827da4..31f2b1e 100644
|
|
|
91873e1 |
--- a/src/main.c
|
|
|
91873e1 |
+++ b/src/main.c
|
|
|
91873e1 |
@@ -94,6 +94,7 @@ typedef struct
|
|
|
91873e1 |
ply_command_parser_t *command_parser;
|
|
|
91873e1 |
ply_mode_t mode;
|
|
|
91873e1 |
ply_renderer_t *renderer;
|
|
|
91873e1 |
+ ply_terminal_t *terminal;
|
|
|
91873e1 |
|
|
|
91873e1 |
ply_trigger_t *quit_trigger;
|
|
|
91873e1 |
|
|
|
91873e1 |
@@ -608,6 +609,13 @@ quit_splash (state_t *state)
|
|
|
91873e1 |
state->renderer = NULL;
|
|
|
91873e1 |
}
|
|
|
91873e1 |
|
|
|
91873e1 |
+ if (state->terminal != NULL)
|
|
|
91873e1 |
+ {
|
|
|
91873e1 |
+ ply_terminal_close (state->terminal);
|
|
|
91873e1 |
+ ply_terminal_free (state->terminal);
|
|
|
91873e1 |
+ state->terminal = NULL;
|
|
|
91873e1 |
+ }
|
|
|
91873e1 |
+
|
|
|
91873e1 |
ply_trace ("removing displays and keyboard");
|
|
|
91873e1 |
remove_displays_and_keyboard (state);
|
|
|
91873e1 |
|
|
|
91873e1 |
@@ -935,6 +943,8 @@ add_display_and_keyboard_for_terminal (state_t *state,
|
|
|
91873e1 |
return;
|
|
|
91873e1 |
}
|
|
|
91873e1 |
|
|
|
91873e1 |
+ state->terminal = terminal;
|
|
|
91873e1 |
+
|
|
|
91873e1 |
ply_console_set_active_vt (state->console,
|
|
|
91873e1 |
ply_terminal_get_vt_number (terminal));
|
|
|
91873e1 |
|
|
|
91873e1 |
@@ -1005,6 +1015,8 @@ add_default_displays_and_keyboard (state_t *state)
|
|
|
91873e1 |
return;
|
|
|
91873e1 |
}
|
|
|
91873e1 |
|
|
|
91873e1 |
+ state->terminal = terminal;
|
|
|
91873e1 |
+
|
|
|
91873e1 |
keyboard = ply_keyboard_new_for_renderer (renderer);
|
|
|
91873e1 |
set_keyboard (state, keyboard);
|
|
|
91873e1 |
|
|
|
91873e1 |
--
|
|
|
91873e1 |
1.6.5.rc2
|
|
|
91873e1 |
|