diff options
author | Ray Strode <rstrode@redhat.com> | 2008-06-26 16:43:52 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2008-06-26 16:45:06 -0400 |
commit | 979c8b993c098ccb0a3f99c2d671a730ee43a93e (patch) | |
tree | 2b293c6f906968433cc14cb8eb027eb164278557 | |
parent | 28f1f6ad51116f23886d5f891f7974fb01379569 (diff) | |
download | plymouth-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
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | src/libplybootsplash/ply-window.c | 20 |
2 files changed, 21 insertions, 1 deletions
@@ -9,4 +9,4 @@ - rotate boot.log per boot cycle (might be easiest to just fork/exec out to logrotate directly) - fix error handling. In particular, ply_open_module gets it completely wrong (replies on errno instead of dlerror()) - consider moving text code from ply-window to a ply-text-buffer analog of ply-frame-buffer -- restore text color palette on exit +- maybe watch for VT switches and do things like restoring text color palette and stopping drawing the framebuffer 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)) |