Merge pull request #12078 from jdgleaver/core-options-reset

Add option to reset all core options for current core/content
This commit is contained in:
Autechre 2021-02-25 18:23:17 +01:00 committed by GitHub
commit 5f5e11a0ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 82 additions and 4 deletions

View File

@ -1286,6 +1286,10 @@ MSG_HASH(
MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_INFO,
"core_option_override_info"
)
MSG_HASH(
MENU_ENUM_LABEL_CORE_OPTIONS_RESET,
"core_options_reset"
)
MSG_HASH(
MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS_CREATE,
"game_specific_options_create"

View File

@ -6248,7 +6248,7 @@ MSG_HASH(
"Save or remove option overrides for the current content."
)
/* Quick Menu > Options > Core Option Overrides */
/* Quick Menu > Options > Manage Core Options */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_CORE_OPTIONS_CREATE,
@ -6270,6 +6270,14 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_OPTION_OVERRIDE_INFO,
"Active Options File:"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_OPTIONS_RESET,
"Reset Options"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_OPTIONS_RESET,
"Set all core options to default values."
)
/* - Legacy (unused) */
MSG_HASH(
@ -10676,6 +10684,10 @@ MSG_HASH(
MSG_CORE_OPTIONS_FILE_REMOVED_SUCCESSFULLY,
"Core options file removed successfully."
)
MSG_HASH(
MSG_CORE_OPTIONS_RESET,
"All core options reset to default."
)
MSG_HASH(
MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER,
"Could not find any next driver"

View File

@ -5082,6 +5082,13 @@ static int action_ok_folder_specific_core_options_remove(const char *path,
return 0;
}
static int action_ok_core_options_reset(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
core_options_reset();
return 0;
}
int action_ok_close_content(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx)
{
int ret;
@ -8426,6 +8433,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
case MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
BIND_ACTION_OK(cbs, action_ok_folder_specific_core_options_remove);
break;
case MENU_SETTING_ACTION_CORE_OPTIONS_RESET:
BIND_ACTION_OK(cbs, action_ok_core_options_reset);
break;
case MENU_SETTING_ITEM_CORE_RESTORE_BACKUP:
BIND_ACTION_OK(cbs, action_ok_core_restore_backup);
break;

View File

@ -666,6 +666,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_shader_options,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_input_remapping_options, MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_options, MENU_ENUM_SUBLABEL_CORE_OPTIONS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_option_override_list, MENU_ENUM_SUBLABEL_CORE_OPTION_OVERRIDE_LIST)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_options_reset, MENU_ENUM_SUBLABEL_CORE_OPTIONS_RESET)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_show_advanced_settings, MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_threaded_data_runloop_enable, MENU_ENUM_SUBLABEL_THREADED_DATA_RUNLOOP_ENABLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_playlist_entry_rename, MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME)
@ -2490,6 +2491,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_CORE_OPTION_OVERRIDE_LIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_option_override_list);
break;
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_options_reset);
break;
case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_core_input_remapping_options);
break;

View File

@ -9797,6 +9797,10 @@ static void materialui_list_insert(
node->icon_texture_index = MUI_TEXTURE_LOAD_STATE;
node->icon_type = MUI_ICON_TYPE_INTERNAL;
break;
case MENU_SETTING_ACTION_CORE_OPTIONS_RESET:
node->icon_texture_index = MUI_TEXTURE_UNDO_SAVE_STATE;
node->icon_type = MUI_ICON_TYPE_INTERNAL;
break;
case FILE_TYPE_RPL_ENTRY:
case MENU_SETTING_DROPDOWN_ITEM:
case MENU_SETTING_DROPDOWN_ITEM_RESOLUTION:

View File

@ -255,6 +255,8 @@ uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone,
case MENU_ENUM_LABEL_GAME_SPECIFIC_CORE_OPTIONS_REMOVE:
case MENU_ENUM_LABEL_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CLOSE];
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_UNDO];
case MENU_ENUM_LABEL_CORE_LOCK:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE];
case MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS:

View File

@ -2700,6 +2700,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case MENU_ENUM_LABEL_GAME_SPECIFIC_CORE_OPTIONS_REMOVE:
case MENU_ENUM_LABEL_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE:
return xmb->textures.list[XMB_TEXTURE_CLOSE];
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
return xmb->textures.list[XMB_TEXTURE_UNDO];
case MENU_ENUM_LABEL_CORE_LOCK:
return xmb->textures.list[XMB_TEXTURE_CORE];
case MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS:

View File

@ -904,6 +904,8 @@ static unsigned menu_displaylist_parse_core_option_override_list(
menu_displaylist_info_t *info)
{
unsigned count = 0;
bool core_has_options = !rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) &&
rarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL);
bool game_options_active = rarch_ctl(RARCH_CTL_IS_GAME_OPTIONS_ACTIVE, NULL);
bool folder_options_active = rarch_ctl(RARCH_CTL_IS_FOLDER_OPTIONS_ACTIVE, NULL);
@ -912,8 +914,7 @@ static unsigned menu_displaylist_parse_core_option_override_list(
* - Core is 'dummy'
* - Core has no options
* - No content has been loaded */
if (rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) ||
!rarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL) ||
if (!core_has_options ||
string_is_empty(path_get(RARCH_PATH_CONTENT)))
goto end;
@ -961,8 +962,17 @@ static unsigned menu_displaylist_parse_core_option_override_list(
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE, 0, 0))
count++;
end:
/* Reset core options */
if (core_has_options)
if (menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_OPTIONS_RESET),
msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS_RESET),
MENU_ENUM_LABEL_CORE_OPTIONS_RESET,
MENU_SETTING_ACTION_CORE_OPTIONS_RESET, 0, 0))
count++;
/* Fallback, in case we open this menu while running
* a content-less core */
* a core without options */
if (count == 0)
if (menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND),

View File

@ -237,6 +237,7 @@ enum menu_settings_type
MENU_SETTING_ACTION_GAME_SPECIFIC_CORE_OPTIONS_REMOVE,
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_CREATE,
MENU_SETTING_ACTION_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE,
MENU_SETTING_ACTION_CORE_OPTIONS_RESET,
MENU_SETTINGS_LAST
};

View File

@ -356,6 +356,7 @@ enum msg_hash_enums
MSG_ERROR_REMOVING_CORE_OPTIONS_FILE,
MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY,
MSG_CORE_OPTIONS_FILE_REMOVED_SUCCESSFULLY,
MSG_CORE_OPTIONS_RESET,
MSG_DECOMPRESSION_ALREADY_IN_PROGRESS,
MSG_DECOMPRESSION_FAILED,
MSG_DISK_EJECTED,
@ -1702,6 +1703,7 @@ enum msg_hash_enums
MENU_LABEL(FOLDER_SPECIFIC_CORE_OPTIONS_CREATE),
MENU_LABEL(FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE),
MENU_LABEL(CORE_OPTION_OVERRIDE_INFO),
MENU_LABEL(CORE_OPTIONS_RESET),
/* Legacy (unused)
* > Cannot remove these because they are

View File

@ -39012,6 +39012,32 @@ error:
return false;
}
void core_options_reset(void)
{
struct rarch_state *p_rarch = &rarch_st;
core_option_manager_t *coreopts = p_rarch->runloop_core_options;
size_t i;
/* If there are no core options, there
* is nothing to do */
if (!coreopts || (coreopts->size < 1))
return;
for (i = 0; i < coreopts->size; i++)
coreopts->opts[i].index = coreopts->opts[i].default_index;
coreopts->updated = true;
#ifdef HAVE_CHEEVOS
rcheevos_validate_config_settings();
#endif
runloop_msg_queue_push(
msg_hash_to_str(MSG_CORE_OPTIONS_RESET),
1, 100, true,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
void menu_content_environment_get(int *argc, char *argv[],
void *args, void *params_data)
{

View File

@ -1995,6 +1995,7 @@ void *input_driver_init_wrap(input_driver_t *input, const char *name);
/* Creates folder and core options stub file for subsequent runs */
bool core_options_create_override(bool game_specific);
bool core_options_remove_override(bool game_specific);
void core_options_reset(void);
typedef enum apple_view_type
{