From: Ray Strode Date: Sat, 3 Oct 2009 05:28:13 +0000 (-0400) Subject: [console] Generalize mode override api X-Git-Tag: 0.8.0~182^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0bade767b8795d3f54fbb90e1b69d158dea1a61e;p=thirdparty%2Fplymouth.git [console] Generalize mode override api Previously it was force_text_mode (). Now, we do ignore_mode_changes (). The force_text_mode() behavior can be emulated by setting the console mode to text mode and then calling the new API. This will be useful because we can make ply_console_set_mode a NOOP for renderers that don't render directly to the console. --- diff --git a/src/libplybootsplash/ply-boot-splash.c b/src/libplybootsplash/ply-boot-splash.c index 72ee7f02..5ba1bc1d 100644 --- a/src/libplybootsplash/ply-boot-splash.c +++ b/src/libplybootsplash/ply-boot-splash.c @@ -169,8 +169,14 @@ on_keyboard_input (ply_boot_splash_t *splash, case KEY_CTRL_T: ply_trace ("toggle text mode!"); splash->should_force_text_mode = !splash->should_force_text_mode; - ply_console_force_text_mode (splash->console, - splash->should_force_text_mode); + + if (splash->should_force_text_mode) + { + ply_console_set_mode (splash->console, PLY_CONSOLE_MODE_TEXT); + ply_console_ignore_mode_changes (splash->console, true); + } + else + ply_console_ignore_mode_changes (splash->console, false); ply_trace ("text mode toggled!"); return; diff --git a/src/libplybootsplash/ply-console.c b/src/libplybootsplash/ply-console.c index 7fb92980..fb5a86db 100644 --- a/src/libplybootsplash/ply-console.c +++ b/src/libplybootsplash/ply-console.c @@ -68,7 +68,7 @@ struct _ply_console uint32_t is_open : 1; uint32_t is_watching_for_vt_changes : 1; - uint32_t should_force_text_mode : 1; + uint32_t should_ignore_mode_changes : 1; }; static bool ply_console_open_device (ply_console_t *console); @@ -106,8 +106,8 @@ ply_console_set_mode (ply_console_t *console, assert (console != NULL); assert (mode == PLY_CONSOLE_MODE_TEXT || mode == PLY_CONSOLE_MODE_GRAPHICS); - if (console->should_force_text_mode) - mode = PLY_CONSOLE_MODE_TEXT; + if (console->should_ignore_mode_changes) + return; switch (mode) { @@ -124,10 +124,10 @@ ply_console_set_mode (ply_console_t *console, } void -ply_console_force_text_mode (ply_console_t *console, - bool should_force) +ply_console_ignore_mode_changes (ply_console_t *console, + bool should_ignore) { - console->should_force_text_mode = should_force; + console->should_ignore_mode_changes = should_ignore; } static void diff --git a/src/libplybootsplash/ply-console.h b/src/libplybootsplash/ply-console.h index 36263bbc..4b45c86e 100644 --- a/src/libplybootsplash/ply-console.h +++ b/src/libplybootsplash/ply-console.h @@ -49,8 +49,8 @@ void ply_console_close (ply_console_t *console); void ply_console_set_mode (ply_console_t *console, ply_console_mode_t mode); -void ply_console_force_text_mode (ply_console_t *console, - bool should_force); +void ply_console_ignore_mode_changes (ply_console_t *console, + bool should_ignore); int ply_console_get_fd (ply_console_t *console); int ply_console_get_active_vt (ply_console_t *console);