diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index ae5830dfac..f28b0a362a 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -45,10 +45,11 @@ static int rgui_entry_iterate(unsigned action) if (!menu->menu_list) return -1; - if (action != MENU_ACTION_NOOP || menu->need_refresh) + if (action != MENU_ACTION_NOOP || menu->need_refresh || + g_runloop.frames.video.current.menu.label.is_updated || + g_runloop.frames.video.current.menu.animation.is_active) { g_runloop.frames.video.current.menu.framebuf.dirty = true; - g_runloop.frames.video.current.menu.label.is_updated = true; } @@ -347,7 +348,8 @@ static void rgui_render(void) && !g_runloop.frames.video.current.menu.label.is_updated) return; - /* framebuf.dirty will be cleared in set_texture() */ + /* ensures the framebuffer will be rendered on the screen */ + g_runloop.frames.video.current.menu.framebuf.dirty = true; g_runloop.frames.video.current.menu.animation.is_active = false; g_runloop.frames.video.current.menu.label.is_updated = false; diff --git a/menu/menu.c b/menu/menu.c index 4ffad76fc6..b750d73620 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -391,17 +391,15 @@ int menu_iterate(retro_input_t input, menu->dt = IDEAL_DT / 4; menu->old_time = menu->cur_time; - if (driver.menu_ctx) - { - if (driver.menu_ctx->set_texture) - driver.menu_ctx->set_texture(); - if (driver.menu_ctx->entry_iterate) - ret = driver.menu_ctx->entry_iterate(action); - } + if (driver.menu_ctx && driver.menu_ctx->entry_iterate) + ret = driver.menu_ctx->entry_iterate(action); if (g_runloop.is_menu) draw_frame(); + if (driver.menu_ctx && driver.menu_ctx->set_texture) + driver.menu_ctx->set_texture(); + if (ret) return -1;