Important speedup by not redrawing too much

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2009-11-24 07:17:18 +01:00
parent 4545f150f3
commit 947fa16c8b
11 changed files with 221 additions and 73 deletions

View file

@ -35,6 +35,7 @@
#include <grub/menu_viewer.h>
#include <grub/gfxmenu_model.h>
#include <grub/gfxmenu_view.h>
#include <grub/time.h>
static void switch_to_text_menu (void)
{
@ -62,6 +63,7 @@ process_key_press (int c,
{
i++;
grub_gfxmenu_model_set_selected_index (model, i);
grub_gfxmenu_redraw_menu (view);
}
}
break;
@ -74,6 +76,7 @@ process_key_press (int c,
{
i--;
grub_gfxmenu_model_set_selected_index (model, i);
grub_gfxmenu_redraw_menu (view);
}
}
break;
@ -170,8 +173,14 @@ show_menu (grub_menu_t menu, int nested)
/* Main event loop. */
int exit_requested = 0;
grub_gfxmenu_view_draw (view);
grub_video_swap_buffers ();
if (view->double_repaint)
grub_gfxmenu_view_draw (view);
while ((! exit_requested) && (! grub_menu_viewer_should_return ()))
{
grub_gfxmenu_redraw_timeout (view);
if (grub_gfxmenu_model_timeout_expired (model))
{
grub_gfxmenu_model_clear_timeout (model);
@ -181,9 +190,8 @@ show_menu (grub_menu_t menu, int nested)
continue;
}
grub_gfxmenu_view_draw (view);
grub_video_swap_buffers ();
handle_key_events (model, view, nested, &exit_requested);
grub_cpu_idle ();
}
grub_gfxmenu_view_destroy (view);