mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 06:40:18 +00:00
(RGUI) Fix performance regression
This commit is contained in:
parent
71f025c2b6
commit
45556766bf
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user