Create RARCH_MENU_CTL_IS_ALIVE

This commit is contained in:
twinaphex 2015-12-05 13:49:22 +01:00
parent 03e2873296
commit 736f343d9f
13 changed files with 35 additions and 27 deletions

View File

@ -1029,7 +1029,7 @@ bool event_command(enum event_command cmd)
break; break;
case EVENT_CMD_MENU_TOGGLE: case EVENT_CMD_MENU_TOGGLE:
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
else else
rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL); rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL);
@ -1096,7 +1096,7 @@ bool event_command(enum event_command cmd)
#ifdef HAVE_MENU #ifdef HAVE_MENU
menu_display_ctl(MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG, NULL); menu_display_ctl(MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG, NULL);
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE); event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
#endif #endif
} }
@ -1384,7 +1384,7 @@ bool event_command(enum event_command cmd)
break; break;
case EVENT_CMD_MENU_PAUSE_LIBRETRO: case EVENT_CMD_MENU_PAUSE_LIBRETRO:
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
if (settings->menu.pause_libretro) if (settings->menu.pause_libretro)
event_command(EVENT_CMD_AUDIO_STOP); event_command(EVENT_CMD_AUDIO_STOP);

View File

@ -1527,7 +1527,7 @@ static bool d3d_frame(void *data, const void *frame,
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
menu_driver_frame(); menu_driver_frame();
#endif #endif

View File

@ -1790,7 +1790,7 @@ static bool gl_frame(void *data, const void *frame,
#if defined(HAVE_MENU) #if defined(HAVE_MENU)
if (gl->menu_texture_enable) if (gl->menu_texture_enable)
{ {
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
menu_driver_frame(); menu_driver_frame();
if (gl->menu_texture_enable) if (gl->menu_texture_enable)

View File

@ -522,7 +522,7 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width,
SDL_RenderCopyEx(vid->renderer, vid->frame.tex, NULL, NULL, vid->rotation, NULL, SDL_FLIP_NONE); SDL_RenderCopyEx(vid->renderer, vid->frame.tex, NULL, NULL, vid->rotation, NULL, SDL_FLIP_NONE);
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
menu_driver_frame(); menu_driver_frame();
#endif #endif

View File

@ -183,7 +183,7 @@ static void ps3_joypad_poll(void)
*state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_TRIANGLE) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_X) : 0; *state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_TRIANGLE) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_X) : 0;
*state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_SQUARE) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_Y) : 0; *state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_SQUARE) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_Y) : 0;
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
int value = 0; int value = 0;
if (cellSysutilGetSystemParamInt(CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN, &value) == 0) if (cellSysutilGetSystemParamInt(CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN, &value) == 0)

View File

@ -542,7 +542,7 @@ static void input_overlay_loaded(void *task_data, void *user_data, const char *e
return; return;
/* We can't display when the menu is up */ /* We can't display when the menu is up */
if (settings->input.overlay_hide_in_menu && menu_driver_alive()) if (settings->input.overlay_hide_in_menu && menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
if (!input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL) if (!input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL)
&& settings->input.overlay_enable) && settings->input.overlay_enable)

View File

@ -362,7 +362,7 @@ int menu_iterate_render(void)
driver->render(); driver->render();
} }
if (menu_driver_alive() && !runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL)) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL) && !runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL))
menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO, NULL); menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO, NULL);
menu_driver_set_texture(); menu_driver_set_texture();

View File

@ -443,7 +443,7 @@ static void rgui_render(void)
{ {
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force); menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
if (menu_entries_needs_refresh() && menu_driver_alive() && !msg_force) if (menu_entries_needs_refresh() && menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL) && !msg_force)
return; return;
if (runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL)) if (runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL))

View File

@ -147,7 +147,8 @@ static void rmenu_render(void)
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force); menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
if (menu_entries_needs_refresh() && menu_driver_alive() if (menu_entries_needs_refresh()
&& menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)
&& !msg_force) && !msg_force)
return; return;

View File

@ -548,9 +548,9 @@ static void rmenu_xui_render(void)
if (!menu) if (!menu)
return; return;
if ( if (
menu_entries_needs_refresh() && menu_entries_needs_refresh()
menu_driver_alive() && && menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)
!msg_force && !msg_force
) )
return; return;

View File

@ -44,7 +44,6 @@ static const menu_ctx_driver_t *menu_ctx_drivers[] = {
NULL NULL
}; };
static bool menu_alive = false;
static menu_handle_t *menu_driver_data; static menu_handle_t *menu_driver_data;
static const menu_ctx_driver_t *menu_driver_ctx; static const menu_ctx_driver_t *menu_driver_ctx;
@ -268,11 +267,6 @@ void menu_driver_free(menu_handle_t *menu)
driver->free(menu); driver->free(menu);
} }
bool menu_driver_alive(void)
{
return menu_alive;
}
int menu_driver_iterate(enum menu_action action) int menu_driver_iterate(enum menu_action action)
{ {
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
@ -292,9 +286,12 @@ void menu_driver_toggle(bool latch)
if (menu_driver->toggle) if (menu_driver->toggle)
menu_driver->toggle(latch); menu_driver->toggle(latch);
menu_alive = latch; if (latch)
menu_driver_ctl(RARCH_MENU_CTL_SET_ALIVE, NULL);
else
menu_driver_ctl(RARCH_MENU_CTL_UNSET_ALIVE, NULL);
if (menu_alive == true) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
menu_entries_set_refresh(false); menu_entries_set_refresh(false);
@ -373,10 +370,19 @@ int menu_driver_pointer_tap(unsigned x, unsigned y, unsigned ptr,
bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
{ {
static bool menu_driver_alive = false;
static bool menu_driver_data_own = false; static bool menu_driver_data_own = false;
switch (state) switch (state)
{ {
case RARCH_MENU_CTL_SET_ALIVE:
menu_driver_alive = true;
break;
case RARCH_MENU_CTL_UNSET_ALIVE:
menu_driver_alive = false;
break;
case RARCH_MENU_CTL_IS_ALIVE:
return menu_driver_alive;
case RARCH_MENU_CTL_SET_OWN_DRIVER: case RARCH_MENU_CTL_SET_OWN_DRIVER:
menu_driver_data_own = true; menu_driver_data_own = true;
break; break;

View File

@ -66,6 +66,9 @@ enum rarch_menu_ctl_state
{ {
RARCH_MENU_CTL_NONE = 0, RARCH_MENU_CTL_NONE = 0,
RARCH_MENU_CTL_DEINIT, RARCH_MENU_CTL_DEINIT,
RARCH_MENU_CTL_SET_ALIVE,
RARCH_MENU_CTL_UNSET_ALIVE,
RARCH_MENU_CTL_IS_ALIVE,
RARCH_MENU_CTL_IS_SET_TEXTURE, RARCH_MENU_CTL_IS_SET_TEXTURE,
RARCH_MENU_CTL_SET_OWN_DRIVER, RARCH_MENU_CTL_SET_OWN_DRIVER,
RARCH_MENU_CTL_UNSET_OWN_DRIVER, RARCH_MENU_CTL_UNSET_OWN_DRIVER,
@ -222,8 +225,6 @@ const menu_ctx_driver_t *menu_ctx_driver_get_ptr(void);
void menu_driver_context_destroy(void); void menu_driver_context_destroy(void);
bool menu_driver_alive(void);
bool menu_driver_list_push(menu_displaylist_info_t *info, unsigned type); bool menu_driver_list_push(menu_displaylist_info_t *info, unsigned type);
size_t menu_driver_list_get_selection(void); size_t menu_driver_list_get_selection(void);

View File

@ -1106,7 +1106,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
{ {
bool fullscreen_toggled = !runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL); bool fullscreen_toggled = !runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL);
#ifdef HAVE_MENU #ifdef HAVE_MENU
fullscreen_toggled = fullscreen_toggled || menu_driver_alive(); fullscreen_toggled = fullscreen_toggled || menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL);
#endif #endif
if (fullscreen_toggled) if (fullscreen_toggled)
@ -1119,7 +1119,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (cmd.menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY)) if (cmd.menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY))
{ {
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
@ -1141,7 +1141,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (menu_driver_alive()) if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{ {
bool focused = runloop_ctl(RUNLOOP_CTL_CHECK_FOCUS, NULL) && !ui_companion_is_on_foreground(); bool focused = runloop_ctl(RUNLOOP_CTL_CHECK_FOCUS, NULL) && !ui_companion_is_on_foreground();
bool is_idle = runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL); bool is_idle = runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL);