+2008-01-15 Robert Millan <rmh@aybabtu.com>
+
+ * normal/menu.c (run_menu): Move timeout message from here ...
+ (print_timeout): ... to here.
+ (run_menu): Use print_timeout() once during initial draw to print
+ the whole message, and again in every clock tick to update only
+ the number of seconds.
+
2008-01-15 Robert Millan <rmh@aybabtu.com>
* kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Obtain
return entry;
}
+static void
+print_timeout (int timeout, int offset, int second_stage)
+{
+ /* NOTE: Do not remove the trailing space characters.
+ They are required to clear the line. */
+ char *msg = " The highlighted entry will be booted automatically in %ds. ";
+ char *msg_end = grub_strchr (msg, '%');
+
+ grub_gotoxy (second_stage ? (msg_end - msg) : 0, GRUB_TERM_HEIGHT - 3);
+ grub_printf (second_stage ? msg_end : msg, timeout);
+ grub_gotoxy (GRUB_TERM_CURSOR_X, GRUB_TERM_FIRST_ENTRY_Y + offset);
+ grub_refresh ();
+};
+
static int
run_menu (grub_menu_t menu, int nested)
{
int first, offset;
unsigned long saved_time;
int default_entry;
+ int timeout;
first = 0;
print_entries (menu, first, offset);
grub_refresh ();
+ timeout = get_timeout ();
+
+ if (timeout > 0)
+ print_timeout (timeout, offset, 0);
+
while (1)
{
int c;
- int timeout;
-
timeout = get_timeout ();
if (timeout > 0)
timeout--;
set_timeout (timeout);
saved_time = current_time;
+ print_timeout (timeout, offset, 1);
}
-
- grub_gotoxy (0, GRUB_TERM_HEIGHT - 3);
- /* NOTE: Do not remove the trailing space characters.
- They are required to clear the line. */
- grub_printf ("\
- The highlighted entry will be booted automatically in %d s. ",
- timeout);
- grub_gotoxy (GRUB_TERM_CURSOR_X, GRUB_TERM_FIRST_ENTRY_Y + offset);
- grub_refresh ();
}
if (timeout == 0)