(Menu) Implement pending shutdown

This commit is contained in:
twinaphex 2016-02-10 19:56:35 +01:00
parent c447f6d1bd
commit e9e6fd7b80
3 changed files with 22 additions and 10 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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,