mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
Some more code de-duplication
This commit is contained in:
parent
620035b766
commit
a254ebe474
@ -314,24 +314,34 @@ static int deferred_archive_action(menu_displaylist_info_t *info)
|
||||
return menu_displaylist_push_list(info, DISPLAYLIST_ARCHIVE_ACTION);
|
||||
}
|
||||
|
||||
static int general_archive_open(menu_displaylist_info_t *info, unsigned id)
|
||||
enum
|
||||
{
|
||||
PUSH_ARCHIVE_OPEN_DETECT_CORE = 0,
|
||||
PUSH_ARCHIVE_OPEN,
|
||||
PUSH_DEFAULT
|
||||
};
|
||||
|
||||
static int general_push(menu_displaylist_info_t *info, unsigned id)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
rarch_system_info_t *system = rarch_system_info_get_ptr();
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
|
||||
fill_pathname_join(info->path, menu->scratch2_buf,
|
||||
menu->scratch_buf, sizeof(info->path));
|
||||
fill_pathname_join(info->label, menu->scratch2_buf,
|
||||
menu->scratch_buf, sizeof(info->label));
|
||||
if (id != PUSH_DEFAULT)
|
||||
{
|
||||
fill_pathname_join(info->path, menu->scratch2_buf,
|
||||
menu->scratch_buf, sizeof(info->path));
|
||||
fill_pathname_join(info->label, menu->scratch2_buf,
|
||||
menu->scratch_buf, sizeof(info->label));
|
||||
}
|
||||
|
||||
info->type_default = MENU_FILE_PLAIN;
|
||||
info->setting = menu_setting_find(info->label);
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case 0:
|
||||
case PUSH_ARCHIVE_OPEN_DETECT_CORE:
|
||||
if (global->core_info.list)
|
||||
strlcpy(info->exts, core_info_list_get_all_extensions(
|
||||
global->core_info.list), sizeof(info->exts));
|
||||
@ -344,7 +354,7 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id)
|
||||
else
|
||||
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
|
||||
break;
|
||||
case 1:
|
||||
case PUSH_ARCHIVE_OPEN:
|
||||
if (global->menu.info.valid_extensions)
|
||||
{
|
||||
if (*global->menu.info.valid_extensions)
|
||||
@ -354,6 +364,17 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id)
|
||||
else
|
||||
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
|
||||
break;
|
||||
case PUSH_DEFAULT:
|
||||
if (info->setting && info->setting->browser_selection_type == ST_DIR) {}
|
||||
else if (global->menu.info.valid_extensions)
|
||||
{
|
||||
if (*global->menu.info.valid_extensions)
|
||||
strlcpy(info->exts, global->menu.info.valid_extensions,
|
||||
sizeof(info->exts));
|
||||
}
|
||||
else
|
||||
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
|
||||
break;
|
||||
}
|
||||
|
||||
(void)settings;
|
||||
@ -387,12 +408,17 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id)
|
||||
|
||||
static int deferred_archive_open_detect_core(menu_displaylist_info_t *info)
|
||||
{
|
||||
return general_archive_open(info, 0);
|
||||
return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE);
|
||||
}
|
||||
|
||||
static int deferred_archive_open(menu_displaylist_info_t *info)
|
||||
{
|
||||
return general_archive_open(info, 1);
|
||||
return general_push(info, PUSH_ARCHIVE_OPEN);
|
||||
}
|
||||
|
||||
static int deferred_push_default(menu_displaylist_info_t *info)
|
||||
{
|
||||
return general_push(info, PUSH_DEFAULT);
|
||||
}
|
||||
|
||||
static int deferred_push_history_list(menu_displaylist_info_t *info)
|
||||
@ -590,53 +616,6 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info)
|
||||
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_DETECTED);
|
||||
}
|
||||
|
||||
static int deferred_push_default(menu_displaylist_info_t *info)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
rarch_system_info_t *system = rarch_system_info_get_ptr();
|
||||
|
||||
info->type_default = MENU_FILE_PLAIN;
|
||||
info->setting = menu_setting_find(info->label);
|
||||
|
||||
if (info->setting && info->setting->browser_selection_type == ST_DIR) {}
|
||||
else if (global->menu.info.valid_extensions)
|
||||
{
|
||||
if (*global->menu.info.valid_extensions)
|
||||
strlcpy(info->exts, global->menu.info.valid_extensions,
|
||||
sizeof(info->exts));
|
||||
}
|
||||
else
|
||||
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
|
||||
|
||||
(void)settings;
|
||||
|
||||
if (settings->multimedia.builtin_mediaplayer_enable ||
|
||||
settings->multimedia.builtin_imageviewer_enable)
|
||||
{
|
||||
struct retro_system_info sysinfo = {0};
|
||||
|
||||
(void)sysinfo;
|
||||
#ifdef HAVE_FFMPEG
|
||||
if (settings->multimedia.builtin_mediaplayer_enable)
|
||||
{
|
||||
libretro_ffmpeg_retro_get_system_info(&sysinfo);
|
||||
strlcat(info->exts, "|", sizeof(info->exts));
|
||||
strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts));
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_IMAGEVIEWER
|
||||
if (settings->multimedia.builtin_imageviewer_enable)
|
||||
{
|
||||
libretro_imageviewer_retro_get_system_info(&sysinfo);
|
||||
strlcat(info->exts, "|", sizeof(info->exts));
|
||||
strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return menu_displaylist_push_list(info, DISPLAYLIST_DEFAULT);
|
||||
}
|
||||
|
||||
static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *cbs,
|
||||
const char *label, uint32_t label_hash)
|
||||
|
Loading…
x
Reference in New Issue
Block a user