From 2df631a36f6c970eaf76d3e35b3e40bd9e5e0f40 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Feb 2016 19:19:30 +0100 Subject: [PATCH] Add menu pending quit mechanism --- menu/menu_driver.c | 14 ++++++++++++++ menu/menu_driver.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 4c887d5d08..860d69cb86 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -291,6 +291,11 @@ int menu_driver_bind_init(menu_file_list_cbs_t *cbs, int menu_driver_iterate(enum menu_action action) { + if (menu_driver_ctl(RARCH_MENU_CTL_IS_PENDING_QUIT, NULL)) + { + menu_driver_ctl(RARCH_MENU_CTL_UNSET_PENDING_QUIT, NULL); + return -1; + } if (!menu_driver_ctx || !menu_driver_ctx->iterate) return -1; return menu_driver_ctx->iterate(menu_driver_data, menu_userdata, action); @@ -396,12 +401,21 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) static bool menu_driver_load_no_content = false; static bool menu_driver_alive = false; static bool menu_driver_data_own = false; + static bool menu_driver_pending_quit = false; static content_playlist_t *menu_driver_playlist = NULL; static struct video_shader *menu_driver_shader = NULL; settings_t *settings = config_get_ptr(); switch (state) { + case RARCH_MENU_CTL_IS_PENDING_QUIT: + return menu_driver_pending_quit; + case RARCH_MENU_CTL_SET_PENDING_QUIT: + menu_driver_pending_quit = true; + break; + case RARCH_MENU_CTL_UNSET_PENDING_QUIT: + menu_driver_pending_quit = false; + break; case RARCH_MENU_CTL_DESTROY: menu_driver_prevent_populate = false; menu_driver_load_no_content = false; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 068a653a88..6758f64ef8 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -98,6 +98,9 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_NAVIGATION_SET_LAST, RARCH_MENU_CTL_NAVIGATION_ASCEND_ALPHABET, RARCH_MENU_CTL_NAVIGATION_DESCEND_ALPHABET, + RARCH_MENU_CTL_IS_PENDING_QUIT, + RARCH_MENU_CTL_SET_PENDING_QUIT, + RARCH_MENU_CTL_UNSET_PENDING_QUIT, RARCH_MENU_CTL_DEINIT, RARCH_MENU_CTL_INIT, RARCH_MENU_CTL_SHADER_DEINIT,