diff --git a/dynamic.c b/dynamic.c index fe0e477af2..786936dba0 100644 --- a/dynamic.c +++ b/dynamic.c @@ -41,6 +41,8 @@ #endif #endif +static bool lib_dummy; + #ifdef HAVE_DYNAMIC #define SYM(x) do { \ function_t func = dylib_proc(lib_handle, #x); \ @@ -49,7 +51,6 @@ } while (0) static dylib_t lib_handle; -static bool lib_dummy; #else #define SYM(x) p##x = x #endif @@ -326,18 +327,14 @@ void libretro_get_current_core_pathname(char *name, size_t size) void init_libretro_sym(bool dummy) { -#ifndef RARCH_CONSOLE lib_dummy = dummy; -#endif // Guarantee that we can do "dirty" casting. // Every OS that this program supports should pass this ... rarch_assert(sizeof(void*) == sizeof(void (*)(void))); -#ifndef RARCH_CONSOLE if (lib_dummy) load_symbols_dummy(); else -#endif { #ifdef HAVE_DYNAMIC // Try to verify that -lretro was not linked in from other modules @@ -371,9 +368,7 @@ void uninit_libretro_sym(void) dylib_close(lib_handle); lib_handle = NULL; #endif -#ifndef RARCH_CONSOLE lib_dummy = false; -#endif // No longer valid. memset(&g_extern.system.info, 0, sizeof(g_extern.system.info)); diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index 00e340af55..1e1074b57f 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -146,6 +146,9 @@ int rarch_main(int argc, char *argv[]) system_process_args(argc, argv); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); + g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); + for (;;) { if (g_extern.system.shutdown) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index f0c2ed63ae..e2004c15f8 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -378,6 +378,20 @@ void menu_init(void) rgui->do_held = false; rgui->frame_buf_show = true; +#ifdef HAVE_DYNAMIC + if (path_is_directory(g_settings.libretro)) + strlcpy(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir)); + else if (*g_settings.libretro) + { + fill_pathname_basedir(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir)); + libretro_get_system_info(g_settings.libretro, &rgui->info); + } +#else + // Don't use pretro_*, it can be dummy core. If we're statically linked, + // retro_* will always go to the "real" core. + retro_get_system_info(&rgui->info); +#endif + #ifdef HAVE_FILEBROWSER if (!(strlen(g_settings.rgui_browser_directory) > 0)) strlcpy(g_settings.rgui_browser_directory, default_paths.filebrowser_startup_dir, diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index b3a73cc688..59edd356f9 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -209,20 +209,6 @@ rgui_handle_t *rgui_init(void) strlcpy(rgui->base_path, g_settings.rgui_browser_directory, sizeof(rgui->base_path)); -#ifdef HAVE_DYNAMIC - if (path_is_directory(g_settings.libretro)) - strlcpy(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir)); - else if (*g_settings.libretro) - { - fill_pathname_basedir(rgui->libretro_dir, g_settings.libretro, sizeof(rgui->libretro_dir)); - libretro_get_system_info(g_settings.libretro, &rgui->info); - } -#else - // Don't use pretro_*, it can be dummy core. If we're statically linked, - // retro_* will always go to the "real" core. - retro_get_system_info(&rgui->info); -#endif - rgui->menu_stack = (rgui_list_t*)calloc(1, sizeof(rgui_list_t)); rgui->selection_buf = (rgui_list_t*)calloc(1, sizeof(rgui_list_t)); rgui_list_push(rgui->menu_stack, "", RGUI_SETTINGS, 0); diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 3cdf757a8e..a53711b956 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -2514,7 +2514,7 @@ static int select_rom(void *data, uint64_t input) if (driver.input->set_keybinds) driver.input->set_keybinds(&key_label_b, 0, 0, 0, (1ULL << KEYBINDS_ACTION_GET_BIND_LABEL)); - filebrowser_update(rgui->browser, input, g_extern.system.valid_extensions); + filebrowser_update(rgui->browser, input, rgui->info.valid_extensions); if (input & (1ULL << DEVICE_NAV_SELECT)) menu_stack_push(GENERAL_VIDEO_MENU, false); @@ -2538,13 +2538,13 @@ static int select_rom(void *data, uint64_t input) { const char * drive_map = menu_drive_mapping_previous(); if (drive_map != NULL) - filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map); + filebrowser_set_root_and_ext(rgui->browser, rgui->info.valid_extensions, drive_map); } else if (input & (1ULL << DEVICE_NAV_R1)) { const char * drive_map = menu_drive_mapping_next(); if (drive_map != NULL) - filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map); + filebrowser_set_root_and_ext(rgui->browser, rgui->info.valid_extensions, drive_map); } if (filebrowser_iterate(rgui->browser, FILEBROWSER_ACTION_PATH_ISDIR))