diff --git a/360/frontend-xdk/menu.cpp b/360/frontend-xdk/menu.cpp index bd8a452f5f..73cb76ab6b 100644 --- a/360/frontend-xdk/menu.cpp +++ b/360/frontend-xdk/menu.cpp @@ -159,7 +159,7 @@ HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled GetChildById(L"XuiBtnGameDir", &m_dir_game); GetChildById(L"XuiBtnCacheDir", &m_dir_cache); - filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), default_paths.filebrowser_startup_dir); + filebrowser_set_root_and_ext(browser, g_extern.system.valid_extensions, default_paths.filebrowser_startup_dir); uint64_t action = (1ULL << RMENU_DEVICE_NAV_B); filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); @@ -184,20 +184,21 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer); uint64_t action = (1ULL << RMENU_DEVICE_NAV_B); - filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), path); + filebrowser_set_root_and_ext(browser, g_extern.system.valid_extensions, path); filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); } } else if (hObjPressed == m_dir_game) { - filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), g_extern.console.main_wrap.paths.default_rom_startup_dir); + filebrowser_set_root_and_ext(browser, g_extern.system.valid_extensions, + g_extern.console.main_wrap.paths.default_rom_startup_dir); uint64_t action = (1ULL << RMENU_DEVICE_NAV_B); filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); } #ifdef HAVE_HDD_CACHE_PARTITION else if (hObjPressed == m_dir_cache) { - filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), "cache:"); + filebrowser_set_root_and_ext(browser, g_extern.system.valid_extensions, "cache:"); uint64_t action = (1ULL << RMENU_DEVICE_NAV_B); filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); @@ -1111,7 +1112,7 @@ void menu_init (void) return; } - browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, rarch_console_get_rom_ext()); + browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, g_extern.system.valid_extensions); tmp_browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, ""); g_extern.console.rmenu.mode = MODE_MENU; diff --git a/console/rarch_console_rom_ext.c b/console/rarch_console_rom_ext.c index 156272e28a..f2b952f03b 100644 --- a/console/rarch_console_rom_ext.c +++ b/console/rarch_console_rom_ext.c @@ -178,10 +178,9 @@ int rarch_extract_zipfile(const char *zip_path, char *first_file, size_t first_f // is the extension of the file supported by the libretro core? struct string_list *ext_list = NULL; const char *file_ext = path_get_extension(write_filename); - const char *ext = rarch_console_get_rom_ext(); - if (ext) - ext_list = string_split(ext, "|"); + if (g_extern.system.valid_extensions) + ext_list = string_split(g_extern.system.valid_extensions, "|"); if (ext_list && string_list_find_elem(ext_list, file_ext)) found_first_file = true; @@ -249,18 +248,3 @@ void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode, u rarch_settings_msg(S_MSG_LOADING_ROM, delay); } } - -const char *rarch_console_get_rom_ext(void) -{ - const char *retval = NULL; - - struct retro_system_info info; - retro_get_system_info(&info); - - if (info.valid_extensions) - retval = info.valid_extensions; - else - retval = "ZIP|zip"; - - return retval; -} diff --git a/console/rarch_console_rom_ext.h b/console/rarch_console_rom_ext.h index b1009b3f28..633118799f 100644 --- a/console/rarch_console_rom_ext.h +++ b/console/rarch_console_rom_ext.h @@ -19,10 +19,6 @@ void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode, unsigned delay); -// Get rom extensions for current library. -// Returns NULL if library doesn't have any preferences in particular. -const char *rarch_console_get_rom_ext(void); - #ifdef HAVE_ZLIB #define WRITEBUFFERSIZE (1024 * 512) diff --git a/console/rmenu/rmenu.c b/console/rmenu/rmenu.c index dfeaeae129..6efec38349 100644 --- a/console/rmenu/rmenu.c +++ b/console/rmenu/rmenu.c @@ -1785,7 +1785,7 @@ int select_rom(void *data, void *state) device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); - browser_update(filebrowser, input, rarch_console_get_rom_ext()); + browser_update(filebrowser, input, g_extern.system.valid_extensions); if (input & (1ULL << RMENU_DEVICE_NAV_SELECT)) menu_stack_push(GENERAL_VIDEO_MENU); @@ -1806,8 +1806,8 @@ int select_rom(void *data, void *state) const char * drive_map = device_ptr->ctx_driver->drive_mapping_previous(); if(drive_map != NULL) { - filebrowser_set_root_and_ext(filebrowser, rarch_console_get_rom_ext(), drive_map); - browser_update(filebrowser, 1ULL << RMENU_DEVICE_NAV_B, rarch_console_get_rom_ext()); + filebrowser_set_root_and_ext(filebrowser, g_extern.system.valid_extensions, drive_map); + browser_update(filebrowser, 1ULL << RMENU_DEVICE_NAV_B, g_extern.system.valid_extensions); } } else if (input & (1ULL << RMENU_DEVICE_NAV_R1)) @@ -1815,8 +1815,8 @@ int select_rom(void *data, void *state) const char * drive_map = device_ptr->ctx_driver->drive_mapping_next(); if(drive_map != NULL) { - filebrowser_set_root_and_ext(filebrowser, rarch_console_get_rom_ext(), drive_map); - browser_update(filebrowser, 1ULL << RMENU_DEVICE_NAV_B, rarch_console_get_rom_ext()); + filebrowser_set_root_and_ext(filebrowser, g_extern.system.valid_extensions, drive_map); + browser_update(filebrowser, 1ULL << RMENU_DEVICE_NAV_B, g_extern.system.valid_extensions); } } @@ -2365,11 +2365,11 @@ void init_filebrowser(void *data) { (void)data; - browser = filebrowser_init(default_paths.filebrowser_startup_dir, rarch_console_get_rom_ext()); + browser = filebrowser_init(default_paths.filebrowser_startup_dir, g_extern.system.valid_extensions); tmpBrowser = filebrowser_init(default_paths.filesystem_root_dir, ""); menu_stack_push(FILE_BROWSER_MENU); - filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), default_paths.filebrowser_startup_dir); + filebrowser_set_root_and_ext(browser, g_extern.system.valid_extensions, default_paths.filebrowser_startup_dir); filebrowser_set_root(tmpBrowser, default_paths.filesystem_root_dir); } diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 802ce4e2b3..87dc600851 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -326,7 +326,7 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, if (core_chooser) strlcpy(exts, "dol|DOL", sizeof(exts)); else - strlcpy(exts, rarch_console_get_rom_ext(), sizeof(exts)); + strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); struct string_list *ext_list = string_split(exts, "|"); char _dir[PATH_MAX]; diff --git a/general.h b/general.h index f53ddaac06..64b9cf0f59 100644 --- a/general.h +++ b/general.h @@ -321,6 +321,7 @@ struct global bool force_nonblock; const char *input_desc_btn[MAX_PLAYERS][RARCH_FIRST_CUSTOM_BIND]; + char valid_extensions[PATH_MAX]; retro_keyboard_event_t key_event; } system; diff --git a/retroarch.c b/retroarch.c index a0a936a96e..7e4831fc1a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2586,6 +2586,12 @@ void rarch_main_clear_state(void) init_state(); } +#ifdef HAVE_ZLIB +#define DEFAULT_EXT "ZIP|zip" +#else +#define DEFAULT_EXT "" +#endif + void rarch_init_system_info(void) { struct retro_system_info *info = &g_extern.system.info; @@ -2598,6 +2604,8 @@ void rarch_init_system_info(void) snprintf(g_extern.title_buf, sizeof(g_extern.title_buf), "RetroArch : %s %s", info->library_name, info->library_version); + snprintf(g_extern.system.valid_extensions, sizeof(g_extern.system.valid_extensions), + info->valid_extensions ? info->valid_extensions : DEFAULT_EXT); } static void init_system_av_info(void)