From a52d615006c88b282032df2006e6c4e1d95d8439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Tue, 22 Jul 2025 22:44:41 -0400 Subject: [PATCH] fix refreshing --- grub-core/gfxmenu/gui_label.c | 2 +- grub-core/gfxmenu/view.c | 19 +++++++++++++------ grub-core/normal/menu.c | 17 ++++++++++++----- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/grub-core/gfxmenu/gui_label.c b/grub-core/gfxmenu/gui_label.c index 605d502c2..2af58c2ec 100644 --- a/grub-core/gfxmenu/gui_label.c +++ b/grub-core/gfxmenu/gui_label.c @@ -221,7 +221,7 @@ label_set_property (void *vself, const char *name, const char *value) grub_get_datetime(&datetime); //grub_gfxmenu_ char* valtmp = grub_strdup (value); - grub_snprintf(valtmp, 100, "%d-%02d-%02d %02d:%02d:%02d %s\n", + grub_snprintf(valtmp, 100, "%d-%02d-%02d %02d:%02d:%02d %s", datetime.year, datetime.month, datetime.day, datetime.hour, datetime.minute, datetime.second, grub_get_weekday_name(&datetime)); diff --git a/grub-core/gfxmenu/view.c b/grub-core/gfxmenu/view.c index 43eb9850e..7e369c1a3 100644 --- a/grub-core/gfxmenu/view.c +++ b/grub-core/gfxmenu/view.c @@ -275,21 +275,28 @@ static void redraw_time(grub_gfxmenu_view_t view) struct grub_datetime datetime; grub_get_datetime(&datetime); char* valtmp = grub_strdup (self->text); - grub_snprintf(valtmp, 100, "%d-%02d-%02d %02d:%02d:%02d %s\n", + grub_snprintf(valtmp, 100, "%d-%02d-%02d %02d:%02d:%02d %s", datetime.year, datetime.month, datetime.day, datetime.hour, datetime.minute, datetime.second, grub_get_weekday_name(&datetime)); grub_video_rect_t before_bounds; cur->self->ops->get_bounds (cur->self, &before_bounds); - grub_gfxmenu_view_redraw(view, &before_bounds); + before_bounds.width += 100; - grub_free(self->text); + + /* grub_free(self->text); self->text = (char*)" "; - grub_gfxmenu_view_redraw(view, &before_bounds); - - self->text = valtmp; + grub_gfxmenu_view_redraw(view, &before_bounds); */ + self->text = valtmp; + grub_video_set_area_status (GRUB_VIDEO_AREA_DISABLED); grub_gfxmenu_view_redraw(view, &before_bounds); + grub_video_swap_buffers(); + if(view->double_repaint) { + grub_video_set_area_status (GRUB_VIDEO_AREA_DISABLED); + grub_gfxmenu_view_redraw(view, &before_bounds); + } + // grub_video_set_area_status (GRUB_VIDEO_AREA_ENABLED); } diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c index 415c727e5..035b7c8e3 100644 --- a/grub-core/normal/menu.c +++ b/grub-core/normal/menu.c @@ -688,10 +688,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) while (1) { - int c; - if(has_second_elapsed (&time_saved_time)) { - menu_print_time(); - } + int c; timeout = grub_menu_get_timeout (); if (grub_normal_exit_level) @@ -702,7 +699,10 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) timeout--; grub_menu_set_timeout (timeout); menu_print_timeout (timeout); - } + menu_print_time(); + } else if(has_second_elapsed (&time_saved_time)) { + menu_print_time(); + } if (timeout == 0) { @@ -730,12 +730,14 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) case GRUB_TERM_CTRL | 'a': current_entry = 0; menu_set_chosen_entry (current_entry); + continue; break; case GRUB_TERM_KEY_END: case GRUB_TERM_CTRL | 'e': current_entry = menu->size - 1; menu_set_chosen_entry (current_entry); + continue; break; case GRUB_TERM_KEY_UP: @@ -744,6 +746,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) if (current_entry > 0) current_entry--; menu_set_chosen_entry (current_entry); + continue; break; case GRUB_TERM_CTRL | 'n': @@ -752,6 +755,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) if (current_entry < menu->size - 1) current_entry++; menu_set_chosen_entry (current_entry); + continue; break; case GRUB_TERM_CTRL | 'g': @@ -761,6 +765,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) else current_entry -= GRUB_MENU_PAGE_SIZE; menu_set_chosen_entry (current_entry); + continue; break; case GRUB_TERM_CTRL | 'c': @@ -768,6 +773,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) if (grub_add (current_entry, GRUB_MENU_PAGE_SIZE, ¤t_entry) || current_entry >= menu->size) current_entry = menu->size - 1; menu_set_chosen_entry (current_entry); + continue; break; case '\n': @@ -815,6 +821,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot, int *notify_boot) *auto_boot = 0; return entry; } + continue; } break; }