summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-06-26 16:43:52 -0400
committerRay Strode <rstrode@redhat.com>2008-06-26 16:45:06 -0400
commit979c8b993c098ccb0a3f99c2d671a730ee43a93e (patch)
tree2b293c6f906968433cc14cb8eb027eb164278557 /src
parent28f1f6ad51116f23886d5f891f7974fb01379569 (diff)
downloadplymouth-979c8b993c098ccb0a3f99c2d671a730ee43a93e.tar.gz
plymouth-979c8b993c098ccb0a3f99c2d671a730ee43a93e.tar.xz
plymouth-979c8b993c098ccb0a3f99c2d671a730ee43a93e.zip
restore color palette when closing window
We should probably do it when changing vts as well
Diffstat (limited to 'src')
-rw-r--r--src/libplybootsplash/ply-window.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libplybootsplash/ply-window.c b/src/libplybootsplash/ply-window.c
index b29dce7..23db760 100644
--- a/src/libplybootsplash/ply-window.c
+++ b/src/libplybootsplash/ply-window.c
@@ -104,6 +104,7 @@ struct _ply_window
ply_window_color_t foreground_color;
ply_window_color_t background_color;
+ uint8_t original_color_palette[TEXT_PALETTE_SIZE];
uint8_t color_palette[TEXT_PALETTE_SIZE];
int number_of_text_rows;
@@ -379,6 +380,22 @@ ply_window_change_color_palette (ply_window_t *window)
return true;
}
+static void
+ply_window_save_color_palette (ply_window_t *window)
+{
+ memcpy (window->original_color_palette, window->color_palette,
+ TEXT_PALETTE_SIZE);
+}
+
+static void
+ply_window_restore_color_palette (ply_window_t *window)
+{
+ memcpy (window->color_palette, window->original_color_palette,
+ TEXT_PALETTE_SIZE);
+
+ ply_window_change_color_palette (window);
+}
+
bool
ply_window_open (ply_window_t *window)
{
@@ -410,6 +427,8 @@ ply_window_open (ply_window_t *window)
if (!ply_window_look_up_color_palette (window))
return false;
+ ply_window_save_color_palette (window);
+
ply_window_hide_text_cursor (window);
ply_window_set_text_cursor_position (window, 0, 0);
@@ -436,6 +455,7 @@ ply_window_open (ply_window_t *window)
void
ply_window_close (ply_window_t *window)
{
+ ply_window_restore_color_palette (window);
ply_window_set_text_cursor_position (window, 0, 0);
if (ply_frame_buffer_device_is_open (window->frame_buffer))