Move more video rendering code to menu_iterate.c

This commit is contained in:
twinaphex 2015-08-18 02:09:46 +02:00
parent f951f12f9d
commit d1bcd01b88
2 changed files with 20 additions and 30 deletions

View File

@ -366,9 +366,6 @@ int menu_entry_iterate(unsigned action)
if (!menu_list)
return -1;
if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending())
menu_display_fb_set_dirty();
menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL);
return menu_iterate_main(label, action);

View File

@ -33,27 +33,6 @@
#include "../input/input_common.h"
#include "../input/input_autodetect.h"
static void menu_driver_render_messagebox(const char *msg)
{
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
const ui_companion_driver_t *ui = ui_companion_get_ptr();
if (!msg)
return;
if (driver->render_messagebox && msg[0] != '\0')
driver->render_messagebox(msg);
if (ui->render_messagebox && msg[0] != '\0')
ui->render_messagebox(msg);
}
static void menu_driver_render(void)
{
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
if (driver->render)
driver->render();
}
static int action_iterate_help(char *s, size_t len, const char *label)
{
unsigned i;
@ -437,15 +416,16 @@ int menu_iterate_main(const char *label, unsigned action)
{
menu_entry_t entry;
char msg[PATH_MAX_LENGTH] = {0};
static bool did_messagebox = false;
enum action_iterate_type iterate_type;
size_t selected;
size_t *pop_selected = NULL;
bool fb_is_dirty = false;
bool do_messagebox = false;
bool do_pop_stack = false;
bool do_post_iterate = false;
bool do_render = false;
int ret = 0;
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
menu_display_t *disp = menu_display_get_ptr();
@ -456,6 +436,9 @@ int menu_iterate_main(const char *label, unsigned action)
iterate_type = action_iterate_type(hash);
if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending())
fb_is_dirty = true;
switch (iterate_type)
{
case ITERATE_TYPE_HELP:
@ -523,13 +506,20 @@ int menu_iterate_main(const char *label, unsigned action)
break;
}
did_messagebox = did_messagebox != do_messagebox;
if (fb_is_dirty != do_messagebox)
fb_is_dirty = true;
if (did_messagebox)
if (fb_is_dirty)
menu_display_fb_set_dirty();
if (do_messagebox)
menu_driver_render_messagebox(msg);
if (do_messagebox && msg[0] != '\0')
{
const ui_companion_driver_t *ui = ui_companion_get_ptr();
if (driver->render_messagebox && msg[0] != '\0')
driver->render_messagebox(msg);
if (ui->render_messagebox && msg[0] != '\0')
ui->render_messagebox(msg);
}
if (do_pop_stack && action == MENU_ACTION_OK)
menu_list_pop(menu_list->menu_stack, pop_selected);
@ -538,7 +528,10 @@ int menu_iterate_main(const char *label, unsigned action)
menu_input_post_iterate(&ret, action);
if (do_render)
menu_driver_render();
{
if (driver->render)
driver->render();
}
return ret;
}