(ovr) add game overrides too

This commit is contained in:
radius 2016-08-26 09:43:29 -05:00
parent 1b91202004
commit 671aa0f59c
8 changed files with 57 additions and 44 deletions

View File

@ -1613,7 +1613,7 @@ void command_event_save_current_config(int override_type)
bool ret = false;
char msg[128] = {0};
ret = config_save_file_diff(override_type);
ret = config_save_overrides(override_type);
return;
}
}
@ -2318,9 +2318,12 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG:
command_event_save_current_config(OVERRIDE_NONE);
break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE:
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
command_event_save_current_config(OVERRIDE_CORE);
break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
command_event_save_current_config(OVERRIDE_GAME);
break;
case CMD_EVENT_MENU_SAVE_CONFIG:
if (!command_event_save_core_config())
return false;

View File

@ -141,7 +141,8 @@ enum event_command
CMD_EVENT_PAUSE,
CMD_EVENT_PAUSE_CHECKS,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
CMD_EVENT_MENU_SAVE_CONFIG,
CMD_EVENT_MENU_PAUSE_LIBRETRO,
/* Toggles menu on/off. */

View File

@ -3386,24 +3386,25 @@ bool config_save_file(const char *path)
}
/**
* config_save_file:
* config_save_overrides:
* @path : Path that shall be written to.
*
* Writes a config file to disk.
* Writes a config file override to disk.
*
* Returns: true (1) on success, otherwise returns false (0).
**/
bool config_save_file_diff(int override_type)
bool config_save_overrides(int override_type)
{
unsigned i = 0;
bool ret = false;
char buf[PATH_MAX_LENGTH] = {0};
char config_directory[PATH_MAX_LENGTH] = {0};
char core_path[PATH_MAX_LENGTH] = {0};
char game_path[PATH_MAX_LENGTH] = {0};
const char *core_name = NULL;
const char *game_name = NULL;
config_file_t *conf = NULL;
char buf[PATH_MAX_LENGTH] = {0};
char config_directory[PATH_MAX_LENGTH] = {0};
char override_directory[PATH_MAX_LENGTH] = {0};
char core_path[PATH_MAX_LENGTH] = {0};
char game_path[PATH_MAX_LENGTH] = {0};
const char *core_name = NULL;
const char *game_name = NULL;
config_file_t *conf = NULL;
global_t *global = global_get_ptr();
settings_t *overrides = config_get_ptr();
@ -3454,6 +3455,12 @@ bool config_save_file_diff(int override_type)
fill_pathname_application_special(config_directory, sizeof(config_directory),
APPLICATION_SPECIAL_DIRECTORY_CONFIG);
fill_pathname_join(override_directory, config_directory, core_name,
sizeof(override_directory));
if(!path_file_exists(override_directory))
path_mkdir(override_directory);
/* Concatenate strings into full paths for core_path, game_path */
fill_pathname_join_special_ext(game_path,
config_directory, core_name,
@ -3467,36 +3474,20 @@ bool config_save_file_diff(int override_type)
file_path_str(FILE_PATH_CONFIG_EXTENSION),
sizeof(core_path));
if (override_type == OVERRIDE_CORE)
{
RARCH_LOG ("[overrides] path %s\n", core_path);
/* Create a new config file from core_path */
conf = config_file_new(core_path);
}
else if(override_type == OVERRIDE_GAME)
{
RARCH_LOG ("[overrides] path %s\n", game_path);
/* Create a new config file from core_path */
conf = config_file_new(game_path);
}
else
return false;
if (!conf)
conf = config_file_new(NULL);
/* Load the original config file in memory */
config_load_file(global->path.config, false, settings);
bool_settings_size = populate_settings_bool(settings, bool_settings);
populate_settings_bool (overrides, bool_overrides);
int_settings_size = populate_settings_int(settings, int_settings);
populate_settings_int (overrides, int_overrides);
float_settings_size = populate_settings_float(settings, float_settings);
populate_settings_float (overrides, float_overrides);
string_settings_size = populate_settings_string(settings, string_settings);
populate_settings_string (overrides, string_overrides);
path_settings_size = populate_settings_path(settings, path_settings);
populate_settings_path (overrides, path_overrides);
@ -3579,7 +3570,6 @@ bool config_save_file_diff(int override_type)
else
return false;
free(bool_settings);
free(bool_overrides);
free(int_settings);

View File

@ -658,14 +658,14 @@ bool config_save_autoconf_profile(const char *path, unsigned user);
bool config_save_file(const char *path);
/**
* config_save_file_diff:
* config_save_overrides:
* @path : Path that shall be written to.
*
* Writes a config file override to disk.
*
* Returns: true (1) on success, otherwise returns false (0).
**/
bool config_save_file_diff(int override_type);
bool config_save_overrides(int override_type);
/* Replaces currently loaded configuration file with
* another one. Will load a dummy core to flush state

View File

@ -2064,8 +2064,10 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg)
return "input_small_keyboard_enable";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG:
return "save_current_config";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE:
return "save_current_config_override";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
return "save_current_config_override_core";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
return "save_current_config_override_game";
case MENU_ENUM_LABEL_STATE_SLOT:
return "state_slot";
case MENU_ENUM_LABEL_CHEEVOS_USERNAME:
@ -3441,8 +3443,10 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg)
return "Keyboard Gamepad Mapping Type";
case MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE:
return "Small Keyboard Enable";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE:
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
return "Save Core Overrides";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
return "Save Game Overrides";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG:
return "Save Current Config";
case MENU_ENUM_LABEL_VALUE_STATE_SLOT:

View File

@ -4374,7 +4374,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG,
PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_NEW_CONFIG,

View File

@ -4165,13 +4165,23 @@ static bool setting_append_list(
CONFIG_ACTION(
list, list_info,
msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE),
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE),
msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE),
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE),
&group_info,
&subgroup_info,
parent_group);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE);
menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE);
menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE);
CONFIG_ACTION(
list, list_info,
msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME),
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME),
&group_info,
&subgroup_info,
parent_group);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME);
menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME);
CONFIG_ACTION(
list, list_info,

View File

@ -1773,9 +1773,11 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,