Create menu_refresh

This commit is contained in:
twinaphex 2015-05-15 17:58:09 +02:00
parent 8f0b03d920
commit 7baa41422d
5 changed files with 39 additions and 13 deletions

View File

@ -258,6 +258,21 @@ void menu_free(menu_handle_t *menu)
free(menu); free(menu);
} }
int menu_refresh(void)
{
menu_handle_t *menu = menu_driver_get_ptr();
if (!menu->need_refresh)
return -1;
if (menu->nonblocking_refresh)
return -1;
if (menu->input.joypad == MENU_ACTION_MESSAGE)
return -1;
menu_entry_iterate(MENU_ACTION_REFRESH);
return 0;
}
/** /**
* menu_iterate: * menu_iterate:
* @input : input sample for this frame * @input : input sample for this frame
@ -275,7 +290,6 @@ int menu_iterate(retro_input_t input,
static retro_time_t last_clock_update = 0; static retro_time_t last_clock_update = 0;
int32_t ret = 0; int32_t ret = 0;
unsigned action = 0; unsigned action = 0;
runloop_t *runloop = rarch_main_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
@ -297,16 +311,8 @@ int menu_iterate(retro_input_t input,
action = menu->input.joypad; action = menu->input.joypad;
if (menu->need_refresh && !menu->nonblocking_refresh && action != MENU_ACTION_MESSAGE)
action = MENU_ACTION_REFRESH;
menu_entry_iterate(action); menu_entry_iterate(action);
if (runloop->is_menu && !runloop->is_idle)
menu_display_fb();
menu_driver_set_texture();
if (ret) if (ret)
return -1; return -1;

View File

@ -154,6 +154,8 @@ typedef enum
**/ **/
void *menu_init(const void *data); void *menu_init(const void *data);
int menu_refresh(void);
/** /**
* menu_iterate: * menu_iterate:
* @input : input sample for this frame * @input : input sample for this frame

View File

@ -206,3 +206,13 @@ void menu_display_unset_viewport(void)
video_driver_set_viewport(global->video_data.width, video_driver_set_viewport(global->video_data.width,
global->video_data.height, false, true); global->video_data.height, false, true);
} }
void menu_display_frame(void)
{
runloop_t *runloop = rarch_main_get_ptr();
if (runloop->is_menu && !runloop->is_idle)
menu_display_fb();
menu_driver_set_texture();
}

View File

@ -54,6 +54,8 @@ void menu_display_set_viewport(void);
void menu_display_unset_viewport(void); void menu_display_unset_viewport(void);
void menu_display_frame(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -29,6 +29,7 @@
#ifdef HAVE_MENU #ifdef HAVE_MENU
#include "menu/menu.h" #include "menu/menu.h"
#include "menu/menu_display.h"
#endif #endif
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
@ -1113,15 +1114,20 @@ int rarch_main_iterate(void)
rarch_main_data_iterate(); rarch_main_data_iterate();
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (runloop->is_menu) if (menu_refresh() == -1)
{ {
menu_handle_t *menu = menu_driver_get_ptr(); if (runloop->is_menu)
if (menu) {
if (menu_iterate(input, old_input, trigger_input) == -1) if (menu_iterate(input, old_input, trigger_input) == -1)
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
}
}
if (runloop->is_menu)
{
if (!input && settings->menu.pause_libretro) if (!input && settings->menu.pause_libretro)
ret = 1; ret = 1;
menu_display_frame();
goto success; goto success;
} }
#endif #endif