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;
case EVENT_CMD_MENU_TOGGLE:
#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);
else
rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL);
@ -1096,7 +1096,7 @@ bool event_command(enum event_command cmd)
#ifdef HAVE_MENU
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);
#endif
}
@ -1384,7 +1384,7 @@ bool event_command(enum event_command cmd)
break;
case EVENT_CMD_MENU_PAUSE_LIBRETRO:
#ifdef HAVE_MENU
if (menu_driver_alive())
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{
if (settings->menu.pause_libretro)
event_command(EVENT_CMD_AUDIO_STOP);

View file

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

View file

@ -1790,7 +1790,7 @@ static bool gl_frame(void *data, const void *frame,
#if defined(HAVE_MENU)
if (gl->menu_texture_enable)
{
if (menu_driver_alive())
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
menu_driver_frame();
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);
#ifdef HAVE_MENU
if (menu_driver_alive())
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
menu_driver_frame();
#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_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;
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;
/* 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)
&& settings->input.overlay_enable)

View file

@ -362,7 +362,7 @@ int menu_iterate_render(void)
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_driver_set_texture();

View file

@ -443,7 +443,7 @@ static void rgui_render(void)
{
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;
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);
if (menu_entries_needs_refresh() && menu_driver_alive()
if (menu_entries_needs_refresh()
&& menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)
&& !msg_force)
return;

View file

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

View file

@ -44,7 +44,6 @@ static const menu_ctx_driver_t *menu_ctx_drivers[] = {
NULL
};
static bool menu_alive = false;
static menu_handle_t *menu_driver_data;
static const menu_ctx_driver_t *menu_driver_ctx;
@ -268,11 +267,6 @@ void menu_driver_free(menu_handle_t *menu)
driver->free(menu);
}
bool menu_driver_alive(void)
{
return menu_alive;
}
int menu_driver_iterate(enum menu_action action)
{
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)
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);
@ -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)
{
static bool menu_driver_alive = false;
static bool menu_driver_data_own = false;
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:
menu_driver_data_own = true;
break;

View file

@ -66,6 +66,9 @@ enum rarch_menu_ctl_state
{
RARCH_MENU_CTL_NONE = 0,
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_SET_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);
bool menu_driver_alive(void);
bool menu_driver_list_push(menu_displaylist_info_t *info, unsigned type);
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);
#ifdef HAVE_MENU
fullscreen_toggled = fullscreen_toggled || menu_driver_alive();
fullscreen_toggled = fullscreen_toggled || menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL);
#endif
if (fullscreen_toggled)
@ -1119,7 +1119,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
#ifdef HAVE_MENU
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))
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
@ -1141,7 +1141,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
#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 is_idle = runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL);