From caafe61f0793a00db24e1142ccafa89f09214054 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 19 Mar 2018 09:53:13 -0500 Subject: [PATCH] show subsystem roms within archives --- menu/widgets/menu_filebrowser.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/menu/widgets/menu_filebrowser.c b/menu/widgets/menu_filebrowser.c index d401c23c5c..ac1edb47f2 100644 --- a/menu/widgets/menu_filebrowser.c +++ b/menu/widgets/menu_filebrowser.c @@ -65,6 +65,8 @@ void filebrowser_parse(void *data, unsigned type_data) unsigned files_count = 0; unsigned dirs_count = 0; settings_t *settings = config_get_ptr(); + rarch_system_info_t *system = runloop_get_system_info(); + const struct retro_subsystem_info* subsystem = NULL; menu_displaylist_info_t *info = (menu_displaylist_info_t*)data; enum menu_displaylist_ctl_state type = (enum menu_displaylist_ctl_state) type_data; @@ -79,16 +81,25 @@ void filebrowser_parse(void *data, unsigned type_data) filter_ext = false; if (info && path_is_compressed) - str_list = file_archive_get_file_list(path, info->exts); + { + if (filebrowser_types != FILEBROWSER_SELECT_FILE_SUBSYSTEM) + str_list = file_archive_get_file_list(path, info->exts); + else + { + subsystem = system->subsystem.data + content_get_subsystem(); + str_list = file_archive_get_file_list(path, subsystem->roms[content_get_subsystem_rom_id()].valid_extensions); + } + } else if (!string_is_empty(path) && filebrowser_types != FILEBROWSER_SELECT_FILE_SUBSYSTEM) + { str_list = dir_list_new(path, (filter_ext && info) ? info->exts : NULL, true, settings->bools.show_hidden_files, true, false); + } else if (!string_is_empty(path) && filebrowser_types == FILEBROWSER_SELECT_FILE_SUBSYSTEM) { - rarch_system_info_t *system = runloop_get_system_info(); - const struct retro_subsystem_info* subsystem = NULL; subsystem = system->subsystem.data + content_get_subsystem(); + if (subsystem && content_get_subsystem_rom_id() < subsystem->num_roms) { str_list = dir_list_new(path,