Add option for suggesting cores when a core is loaded (#17920)

This commit is contained in:
sonninnos 2025-05-20 15:54:22 +03:00 committed by GitHub
parent 7d98987f9d
commit 0e4cf00d1f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 71 additions and 33 deletions

View File

@ -570,6 +570,7 @@
#define DEFAULT_REMAP_SAVE_ON_EXIT true
#define DEFAULT_SHOW_HIDDEN_FILES false
#define DEFAULT_CORE_SUGGEST_ALWAYS false
/* Initialise file browser with the last used start directory */
#define DEFAULT_USE_LAST_START_DIRECTORY false

View File

@ -1812,6 +1812,7 @@ static struct config_bool_setting *populate_settings_bool(
SETTING_BOOL("remap_save_on_exit", &settings->bools.remap_save_on_exit, true, DEFAULT_REMAP_SAVE_ON_EXIT, false);
SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, DEFAULT_SHOW_HIDDEN_FILES, false);
SETTING_BOOL("use_last_start_directory", &settings->bools.use_last_start_directory, true, DEFAULT_USE_LAST_START_DIRECTORY, false);
SETTING_BOOL("core_suggest_always", &settings->bools.core_suggest_always, true, DEFAULT_CORE_SUGGEST_ALWAYS, false);
SETTING_BOOL("camera_allow", &settings->bools.camera_allow, true, false, false);
SETTING_BOOL("location_allow", &settings->bools.location_allow, true, false, false);
SETTING_BOOL("cloud_sync_enable", &settings->bools.cloud_sync_enable, true, false, false);

View File

@ -731,7 +731,6 @@ typedef struct settings
bool frame_time_counter_reset_after_save_state;
/* Menu */
bool filter_by_current_core;
bool menu_enable_widgets;
bool menu_show_load_content_animation;
bool notification_show_autoconfig;
@ -1037,8 +1036,11 @@ typedef struct settings
bool sort_screenshots_by_content_enable;
bool config_save_on_exit;
bool remap_save_on_exit;
bool show_hidden_files;
bool filter_by_current_core;
bool use_last_start_directory;
bool core_suggest_always;
bool savefiles_in_content_dir;
bool savestates_in_content_dir;

View File

@ -5002,6 +5002,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY,
"Open File Browser at the last used location when loading content from the Start Directory. Note: Location will be reset to default upon restarting RetroArch."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Always Suggest Cores"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suggest available cores even when a core is already loaded."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Use Built-In Media Player"

View File

@ -1930,6 +1930,7 @@ static bool menu_content_find_first_core(
menu_content_ctx_defer_info_t *def_info,
bool load_content_with_current_core, char *s, size_t len)
{
settings_t *settings = config_get_ptr();
const core_info_t *info = NULL;
size_t supported = 0;
core_info_list_t *core_info = (core_info_list_t*)def_info->data;
@ -1961,6 +1962,11 @@ static bool menu_content_find_first_core(
def_info->s, &info,
&supported);
/* Don't suggest cores if a core is already loaded. */
if ( !path_is_empty(RARCH_PATH_CORE)
&& !settings->bools.core_suggest_always)
load_content_with_current_core = true;
/* We started the menu with 'Load Content', we are
* going to use the current core to load this. */
if (load_content_with_current_core)
@ -9691,8 +9697,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
}
else
{
if ( string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES))
&& path_is_empty(RARCH_PATH_CORE))
if (string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES)))
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core);
else
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push);

View File

@ -1069,6 +1069,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_entry_remove,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_system_directory, MENU_ENUM_SUBLABEL_SYSTEM_DIRECTORY)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_rgui_browser_directory, MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_use_last_start_directory, MENU_ENUM_SUBLABEL_USE_LAST_START_DIRECTORY)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_suggest_always, MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_content_dir, MENU_ENUM_SUBLABEL_CONTENT_DIR)
DEFAULT_SUBLABEL_MACRO(action_bind_dynamic_wallpapers_directory, MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPERS_DIRECTORY)
DEFAULT_SUBLABEL_MACRO(action_bind_thumbnails_directory, MENU_ENUM_SUBLABEL_THUMBNAILS_DIRECTORY)
@ -4902,6 +4903,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_USE_LAST_START_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_use_last_start_directory);
break;
case MENU_ENUM_LABEL_CORE_SUGGEST_ALWAYS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_suggest_always);
break;
case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_toggle_gamepad_combo);
break;

View File

@ -10147,6 +10147,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_USE_LAST_START_DIRECTORY, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_CORE_SUGGEST_ALWAYS, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_USE_BUILTIN_PLAYER, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_USE_BUILTIN_IMAGE_VIEWER, PARSE_ONLY_BOOL},
};

View File

@ -20015,20 +20015,6 @@ static bool setting_append_list(
(*list)[list_info->index - 1].action_left = &setting_bool_action_left_with_refresh;
(*list)[list_info->index - 1].action_right = &setting_bool_action_right_with_refresh;
CONFIG_BOOL(
list, list_info,
&settings->bools.use_last_start_directory,
MENU_ENUM_LABEL_USE_LAST_START_DIRECTORY,
MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY,
false,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);
@ -20057,6 +20043,51 @@ static bool setting_append_list(
general_read_handler,
SD_FLAG_NONE);
CONFIG_BOOL(
list, list_info,
&settings->bools.filter_by_current_core,
MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE,
MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
DEFAULT_FILTER_BY_CURRENT_CORE,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
CONFIG_BOOL(
list, list_info,
&settings->bools.use_last_start_directory,
MENU_ENUM_LABEL_USE_LAST_START_DIRECTORY,
MENU_ENUM_LABEL_VALUE_USE_LAST_START_DIRECTORY,
DEFAULT_USE_LAST_START_DIRECTORY,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
CONFIG_BOOL(
list, list_info,
&settings->bools.core_suggest_always,
MENU_ENUM_LABEL_CORE_SUGGEST_ALWAYS,
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
DEFAULT_CORE_SUGGEST_ALWAYS,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);
break;
@ -20101,21 +20132,6 @@ static bool setting_append_list(
SD_FLAG_NONE);
#endif
CONFIG_BOOL(
list, list_info,
&settings->bools.filter_by_current_core,
MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE,
MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
DEFAULT_FILTER_BY_CURRENT_CORE,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);
break;

View File

@ -2583,6 +2583,7 @@ enum msg_hash_enums
MENU_LABEL(CONFIRM_ON_EXIT),
MENU_LABEL(SHOW_HIDDEN_FILES),
MENU_LABEL(USE_LAST_START_DIRECTORY),
MENU_LABEL(CORE_SUGGEST_ALWAYS),
/* Driver settings */

View File

@ -2470,7 +2470,6 @@ bool task_push_load_content_with_new_core_from_menu(
path_set(RARCH_PATH_CONTENT, fullpath);
path_set(RARCH_PATH_CORE, core_path);
path_clear(RARCH_PATH_CORE_LAST);
#ifdef HAVE_DYNAMIC
/* Load core */