(RGUI) Fix performance regression

This commit is contained in:
Higor Eurípedes 2015-06-23 23:07:08 -03:00
parent 71f025c2b6
commit 45556766bf

View File

@ -53,6 +53,7 @@
#endif #endif
typedef struct { typedef struct {
bool force_redraw;
char msgbox[4096]; char msgbox[4096];
} rgui_t; } rgui_t;
@ -259,14 +260,16 @@ static void rgui_render_background(void)
static void rgui_set_message(const char *message) static void rgui_set_message(const char *message)
{ {
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
rgui_t *rgui = NULL; menu_animation_t *anim = menu_animation_get_ptr();
rgui_t *rgui = NULL;
if (!menu || !menu->userdata) if (!menu || !menu->userdata || !anim || !message || !*message)
return; return;
rgui = (rgui_t*)menu->userdata; rgui = (rgui_t*)menu->userdata;
strlcpy(rgui->msgbox, message, sizeof(rgui->msgbox)); strlcpy(rgui->msgbox, message, sizeof(rgui->msgbox));
rgui->force_redraw = true;
} }
static void rgui_render_messagebox(const char *message) static void rgui_render_messagebox(const char *message)
@ -389,18 +392,23 @@ static void rgui_render(void)
rgui = menu->userdata; rgui = menu->userdata;
if (menu_entries_needs_refresh() if (!rgui->force_redraw)
&& menu_driver_alive() {
&& !disp->msg_force if (menu_entries_needs_refresh() && menu_driver_alive() && !disp->msg_force)
&& runloop->is_idle return;
&& !menu_display_update_pending()
&& rgui->msgbox[0] == '\0') if (runloop->is_idle)
return; return;
if (!menu_display_update_pending())
return;
}
/* ensures the framebuffer will be rendered on the screen */ /* ensures the framebuffer will be rendered on the screen */
menu_display_fb_set_dirty(); menu_display_fb_set_dirty();
anim->is_active = false; anim->is_active = false;
anim->label.is_updated = false; anim->label.is_updated = false;
rgui->force_redraw = false;
if (settings->menu.pointer.enable) if (settings->menu.pointer.enable)
@ -553,6 +561,7 @@ static void rgui_render(void)
{ {
rgui_render_messagebox(rgui->msgbox); rgui_render_messagebox(rgui->msgbox);
rgui->msgbox[0] = '\0'; rgui->msgbox[0] = '\0';
rgui->force_redraw = true;
} }
if (settings->menu.mouse.enable) if (settings->menu.mouse.enable)