mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +00:00
(Menu) Implement pending shutdown
This commit is contained in:
parent
c447f6d1bd
commit
e9e6fd7b80
@ -119,7 +119,6 @@ typedef struct zarch_handle
|
||||
unsigned height;
|
||||
gfx_font_raster_block_t tmp_block;
|
||||
unsigned hash;
|
||||
bool time_to_quit;
|
||||
|
||||
struct {
|
||||
bool enable;
|
||||
@ -881,7 +880,7 @@ static int zarch_zui_render_sidebar(zui_t *zui)
|
||||
|
||||
if (zarch_zui_button_full(zui, x1, y1, x1 + width, y1 + 64, "Exit"))
|
||||
{
|
||||
zui->time_to_quit = true;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PENDING_SHUTDOWN, NULL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1270,14 +1269,6 @@ static int zarch_iterate(void *data, void *userdata, enum menu_action action)
|
||||
if (perform_action)
|
||||
ret = menu_entry_action(&entry, action_id, act);
|
||||
|
||||
if (zui->time_to_quit)
|
||||
{
|
||||
zui->time_to_quit = false;
|
||||
if (!event_cmd_ctl(EVENT_CMD_QUIT, NULL))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -296,6 +296,13 @@ int menu_driver_iterate(enum menu_action action)
|
||||
menu_driver_ctl(RARCH_MENU_CTL_UNSET_PENDING_QUIT, NULL);
|
||||
return -1;
|
||||
}
|
||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_PENDING_SHUTDOWN, NULL))
|
||||
{
|
||||
menu_driver_ctl(RARCH_MENU_CTL_UNSET_PENDING_SHUTDOWN, NULL);
|
||||
if (!event_cmd_ctl(EVENT_CMD_QUIT, NULL))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
if (!menu_driver_ctx || !menu_driver_ctx->iterate)
|
||||
return -1;
|
||||
return menu_driver_ctx->iterate(menu_driver_data, menu_userdata, action);
|
||||
@ -402,6 +409,7 @@ 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_pending_quit = false;
|
||||
static bool menu_driver_pending_shutdown = false;
|
||||
static content_playlist_t *menu_driver_playlist = NULL;
|
||||
static struct video_shader *menu_driver_shader = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
@ -416,7 +424,17 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
case RARCH_MENU_CTL_UNSET_PENDING_QUIT:
|
||||
menu_driver_pending_quit = false;
|
||||
break;
|
||||
case RARCH_MENU_CTL_IS_PENDING_SHUTDOWN:
|
||||
return menu_driver_pending_shutdown;
|
||||
case RARCH_MENU_CTL_SET_PENDING_SHUTDOWN:
|
||||
menu_driver_pending_shutdown = true;
|
||||
break;
|
||||
case RARCH_MENU_CTL_UNSET_PENDING_SHUTDOWN:
|
||||
menu_driver_pending_shutdown = false;
|
||||
break;
|
||||
case RARCH_MENU_CTL_DESTROY:
|
||||
menu_driver_pending_quit = false;
|
||||
menu_driver_pending_shutdown = false;
|
||||
menu_driver_prevent_populate = false;
|
||||
menu_driver_load_no_content = false;
|
||||
menu_driver_alive = false;
|
||||
|
@ -101,6 +101,9 @@ enum rarch_menu_ctl_state
|
||||
RARCH_MENU_CTL_IS_PENDING_QUIT,
|
||||
RARCH_MENU_CTL_SET_PENDING_QUIT,
|
||||
RARCH_MENU_CTL_UNSET_PENDING_QUIT,
|
||||
RARCH_MENU_CTL_IS_PENDING_SHUTDOWN,
|
||||
RARCH_MENU_CTL_SET_PENDING_SHUTDOWN,
|
||||
RARCH_MENU_CTL_UNSET_PENDING_SHUTDOWN,
|
||||
RARCH_MENU_CTL_DEINIT,
|
||||
RARCH_MENU_CTL_INIT,
|
||||
RARCH_MENU_CTL_SHADER_DEINIT,
|
||||
|
Loading…
x
Reference in New Issue
Block a user