[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.
This commit is contained in:
Ray Strode 2009-10-03 01:28:13 -04:00
parent 5b0910dc5f
commit 0bade767b8
3 changed files with 16 additions and 10 deletions

View file

@ -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;

View file

@ -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

View file

@ -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);