diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 6360e388c2..8fcd7ce2ee 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -322,25 +322,6 @@ void menu_driver_frame(video_frame_info_t *video_info) menu_driver_ctx->frame(menu_userdata, video_info); } -/** - * menu_update_libretro_info: - * - * Update menu state which depends on config. - **/ -static void menu_update_libretro_info(void) -{ - struct retro_system_info *info = NULL; - - menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET, - &info); - - if (!info) - return; - - command_event(CMD_EVENT_CORE_INFO_INIT, NULL); - command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL); -} - bool menu_driver_render(bool is_idle, bool rarch_is_inited, bool rarch_is_dummy_core) { @@ -455,22 +436,11 @@ bool menu_driver_list_clear(void *data) return true; } -static bool menu_driver_context_reset(bool video_is_threaded) -{ - if (!menu_driver_ctx || !menu_driver_ctx->context_reset) - return false; - menu_driver_ctx->context_reset(menu_userdata, video_is_threaded); - return true; -} - static bool menu_driver_init_internal(bool video_is_threaded) { - settings_t *settings = config_get_ptr(); - menu_update_libretro_info(); - if (menu_driver_data) - return true; + settings_t *settings = config_get_ptr(); - menu_driver_data = (menu_handle_t*) + menu_driver_data = (menu_handle_t*) menu_driver_ctx->init(&menu_userdata, video_is_threaded); if (!menu_driver_data || !menu_init(menu_driver_data)) @@ -496,8 +466,20 @@ static bool menu_driver_init_internal(bool video_is_threaded) bool menu_driver_init(bool video_is_threaded) { - if (menu_driver_init_internal(video_is_threaded)) - return menu_driver_context_reset(video_is_threaded); + struct retro_system_info *info = &menu_driver_system; + + if (info) + { + /* Update menu state which depends on config. */ + command_event(CMD_EVENT_CORE_INFO_INIT, NULL); + command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL); + } + + if (menu_driver_data || menu_driver_init_internal(video_is_threaded)) + { + if (menu_driver_ctx && menu_driver_ctx->context_reset) + menu_driver_ctx->context_reset(menu_userdata, video_is_threaded); + } return false; }