mirror of
https://github.com/libretro/RetroArch.git
synced 2025-04-02 10:51:52 -04:00
Create RARCH_MENU_CTL_IS_ALIVE
This commit is contained in:
parent
03e2873296
commit
736f343d9f
13 changed files with 35 additions and 27 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue