From a8f16eab1abbde0c487e955db5d1704f64a3384f Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Sat, 18 Feb 2012 19:59:01 +0100 Subject: [PATCH] Replace grub_checkkey with grub_getkey_noblock. * grub-core/kern/term.c (grub_checkkey): Replaced with ... (grub_getkey_noblock): ... this. All users updated. --- ChangeLog | 7 +++++++ grub-core/commands/cat.c | 5 ++--- grub-core/commands/i386/pc/play.c | 8 +++----- grub-core/commands/sleep.c | 2 +- grub-core/kern/term.c | 26 +++++++++----------------- grub-core/normal/menu.c | 14 +++++--------- include/grub/term.h | 2 +- 7 files changed, 28 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index b7d679cae..83948c937 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-02-18 Vladimir Serbinenko + + Replace grub_checkkey with grub_getkey_noblock. + + * grub-core/kern/term.c (grub_checkkey): Replaced with ... + (grub_getkey_noblock): ... this. All users updated. + 2012-02-18 Vladimir Serbinenko * grub-core/kern/emu/console.c: Move to ... diff --git a/grub-core/commands/cat.c b/grub-core/commands/cat.c index 4f05190a1..7dccce823 100644 --- a/grub-core/commands/cat.c +++ b/grub-core/commands/cat.c @@ -41,7 +41,7 @@ grub_cmd_cat (grub_extcmd_context_t ctxt, int argc, char **args) grub_file_t file; char buf[GRUB_DISK_SECTOR_SIZE]; grub_ssize_t size; - int key = 0; + int key = GRUB_TERM_NO_KEY; if (state[0].set) dos = 1; @@ -77,8 +77,7 @@ grub_cmd_cat (grub_extcmd_context_t ctxt, int argc, char **args) } } - while (grub_checkkey () >= 0 && - (key = grub_getkey ()) != GRUB_TERM_ESC) + while ((key = grub_getkey_noblock ()) != GRUB_TERM_ESC) ; } diff --git a/grub-core/commands/i386/pc/play.c b/grub-core/commands/i386/pc/play.c index dc2255804..6ca17a181 100644 --- a/grub-core/commands/i386/pc/play.c +++ b/grub-core/commands/i386/pc/play.c @@ -151,7 +151,7 @@ play (unsigned tempo, struct note *note) { unsigned int to; - if (note->pitch == T_FINE || grub_checkkey () >= 0) + if (note->pitch == T_FINE || grub_getkey_noblock () != GRUB_TERM_NO_KEY) return 1; grub_dprintf ("play", "pitch = %d, duration = %d\n", note->pitch, @@ -169,7 +169,8 @@ play (unsigned tempo, struct note *note) } to = grub_get_rtc () + BASE_TEMPO * note->duration / tempo; - while (((unsigned int) grub_get_rtc () <= to) && (grub_checkkey () < 0)) + while (((unsigned int) grub_get_rtc () <= to) + && (grub_getkey_noblock () == GRUB_TERM_NO_KEY)) ; return 0; @@ -261,9 +262,6 @@ grub_cmd_play (grub_command_t cmd __attribute__ ((unused)), beep_off (); - while (grub_checkkey () > 0) - grub_getkey (); - return 0; } diff --git a/grub-core/commands/sleep.c b/grub-core/commands/sleep.c index 4498756ac..5b51d3b21 100644 --- a/grub-core/commands/sleep.c +++ b/grub-core/commands/sleep.c @@ -54,7 +54,7 @@ grub_interruptible_millisleep (grub_uint32_t ms) start = grub_get_time_ms (); while (grub_get_time_ms () - start < ms) - if (grub_checkkey () >= 0 && grub_getkey () == GRUB_TERM_ESC) + if (grub_getkey_noblock () == GRUB_TERM_ESC) return 1; return 0; diff --git a/grub-core/kern/term.c b/grub-core/kern/term.c index d7c65dd82..767f5c107 100644 --- a/grub-core/kern/term.c +++ b/grub-core/kern/term.c @@ -79,16 +79,11 @@ grub_xputs_dumb (const char *str) void (*grub_xputs) (const char *str) = grub_xputs_dumb; -static int pending_key = GRUB_TERM_NO_KEY; - int -grub_checkkey (void) +grub_getkey_noblock (void) { grub_term_input_t term; - if (pending_key != GRUB_TERM_NO_KEY) - return pending_key; - if (grub_term_poll_usb) grub_term_poll_usb (); @@ -97,12 +92,12 @@ grub_checkkey (void) FOR_ACTIVE_TERM_INPUTS(term) { - pending_key = term->getkey (term); - if (pending_key != GRUB_TERM_NO_KEY) - return pending_key; + int key = term->getkey (term); + if (key != GRUB_TERM_NO_KEY) + return key; } - return -1; + return GRUB_TERM_NO_KEY; } int @@ -112,18 +107,15 @@ grub_getkey (void) grub_refresh (); - grub_checkkey (); - while (pending_key == GRUB_TERM_NO_KEY) + while (1) { + ret = grub_getkey_noblock (); + if (ret != GRUB_TERM_NO_KEY) + return ret; grub_cpu_idle (); - grub_checkkey (); } - ret = pending_key; - pending_key = GRUB_TERM_NO_KEY; - return ret; } - void grub_refresh (void) { diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c index 0833937e0..100e8b3f3 100644 --- a/grub-core/normal/menu.c +++ b/grub-core/normal/menu.c @@ -52,12 +52,8 @@ grub_wait_after_message (void) endtime = grub_get_time_ms () + 10000; - while (grub_get_time_ms () < endtime) - if (grub_checkkey () >= 0) - { - grub_getkey (); - break; - } + while (grub_get_time_ms () < endtime + && grub_getkey_noblock () == GRUB_TERM_NO_KEY); grub_xputs ("\n"); } @@ -560,10 +556,10 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot) return default_entry; } - if (grub_checkkey () >= 0 || timeout < 0) - { - c = grub_getkey (); + c = grub_getkey_noblock (); + if (c != GRUB_TERM_NO_KEY) + { if (timeout >= 0) { grub_env_unset ("timeout"); diff --git a/include/grub/term.h b/include/grub/term.h index 8fdf16234..e73f8aa25 100644 --- a/include/grub/term.h +++ b/include/grub/term.h @@ -320,7 +320,7 @@ grub_term_unregister_output (grub_term_output_t term) void grub_putcode (grub_uint32_t code, struct grub_term_output *term); int EXPORT_FUNC(grub_getkey) (void); -int EXPORT_FUNC(grub_checkkey) (void); +int EXPORT_FUNC(grub_getkey_noblock) (void); void grub_cls (void); void EXPORT_FUNC(grub_refresh) (void); void grub_puts_terminal (const char *str, struct grub_term_output *term);