diff --git a/command_event.c b/command_event.c index 88aae5419c..52d4c183a1 100644 --- a/command_event.c +++ b/command_event.c @@ -981,10 +981,9 @@ bool event_command(enum event_command cmd) event_command(EVENT_CMD_LOAD_CORE_DEINIT); { #ifdef HAVE_MENU - menu_handle_t *menu = menu_driver_get_ptr(); - if (menu) - event_update_system_info(&g_system_menu, - &menu->load_no_content); + bool *ptr = NULL; + if (menu_driver_ctl(RARCH_MENU_CTL_LOAD_NO_CONTENT_GET, &ptr)) + event_update_system_info(&g_system_menu, ptr); #endif } break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 72ec8ce74c..37f23131c4 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -657,7 +657,7 @@ static int generic_action_ok(const char *path, #if defined(HAVE_DYNAMIC) /* No content needed for this core, load core immediately. */ - if (menu->load_no_content && settings->core.set_supports_no_game_enable) + if (menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL) && settings->core.set_supports_no_game_enable) { runloop_ctl(RUNLOOP_CTL_CLEAR_CONTENT_PATH, NULL); ret = menu_common_load_content(NULL, NULL, false, CORE_TYPE_PLAIN); diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 292e18e35f..0f23dc4868 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -366,17 +366,16 @@ static void menu_environment_get(int *argc, char *argv[], void *args, void *params_data) { struct rarch_main_wrap *wrap_args = (struct rarch_main_wrap*)params_data; + char *fullpath = NULL; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - char *fullpath = NULL; if (!wrap_args) return; runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath); - wrap_args->no_content = menu->load_no_content; + wrap_args->no_content = menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL); if (!global->has_set.verbosity) wrap_args->verbose = *retro_main_verbosity(); @@ -430,7 +429,6 @@ static void menu_push_to_history_playlist(void) bool menu_load_content(enum rarch_core_type type) { bool msg_force = true; - menu_handle_t *menu = menu_driver_get_ptr(); char *fullpath = NULL; runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath); @@ -450,11 +448,11 @@ bool menu_load_content(enum rarch_core_type type) return false; } - menu_shader_manager_init(menu); + menu_shader_manager_init(menu_driver_get_ptr()); event_command(EVENT_CMD_HISTORY_INIT); - if (*fullpath || (menu && menu->load_no_content)) + if (*fullpath || menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL)) menu_push_to_history_playlist(); event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); @@ -629,17 +627,18 @@ error: 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; const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); switch (state) { case RARCH_MENU_CTL_DESTROY: - menu_driver_alive = false; - menu_driver_data_own = false; - menu_driver_ctx = NULL; + menu_driver_load_no_content = false; + menu_driver_alive = false; + menu_driver_data_own = false; + menu_driver_ctx = NULL; break; case RARCH_MENU_CTL_FRAME: if (!menu_driver_alive) @@ -681,13 +680,22 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) menu_free(menu_driver_data); menu_driver_data = NULL; break; + case RARCH_MENU_CTL_LOAD_NO_CONTENT_GET: + { + bool **ptr = (bool**)data; + if (!ptr) + return false; + *ptr = (bool*)&menu_driver_load_no_content; + return true; + } + break; case RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT: - return menu->load_no_content; + return menu_driver_load_no_content; case RARCH_MENU_CTL_SET_LOAD_NO_CONTENT: - menu->load_no_content = true; + menu_driver_load_no_content = true; break; case RARCH_MENU_CTL_UNSET_LOAD_NO_CONTENT: - menu->load_no_content = false; + menu_driver_load_no_content = false; break; default: case RARCH_MENU_CTL_NONE: diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 96ef4e77bb..6ad3dc41bc 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -107,6 +107,7 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_SET_OWN_DRIVER, RARCH_MENU_CTL_UNSET_OWN_DRIVER, RARCH_MENU_CTL_OWNS_DRIVER, + RARCH_MENU_CTL_LOAD_NO_CONTENT_GET, RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, RARCH_MENU_CTL_SET_LOAD_NO_CONTENT, RARCH_MENU_CTL_UNSET_LOAD_NO_CONTENT @@ -237,8 +238,6 @@ typedef struct char msg[PATH_MAX_LENGTH]; } menu_state; - bool load_no_content; - /* Menu shader */ char default_glslp[PATH_MAX_LENGTH]; char default_cgp[PATH_MAX_LENGTH];