Merge pull request #5250 from fr500/content_dir

Content dir refactor
This commit is contained in:
Twinaphex 2017-08-06 06:05:46 +02:00 committed by GitHub
commit 99a8d2ec86
14 changed files with 166 additions and 38 deletions

View File

@ -1,11 +1,14 @@
# 1.6.4 (future)
- ANDROID: Fire Stick & Fire TV remote overrides gamepad port 0 on button press and viceversa like SHIELD devices
- ANDROID: Provide default save / system / state / screenshot locations
- AUDIO: Audio mixer supports MOD/S3M/XM file types now!
- INPUT: input swap override flag (for remotes) is cleared correctly
- COMMON: Add 'Delete Core' option to Core Information menu.
- COMMON: Allow Max Timing Skew to be set to 0.
- COMMON: Change the "content dir" behavior so it works on either a flag or an empty directory setting, now platform drivers can provide defaults for save / system / state / screenshot dirs and still allow the content dir functionality, these settings are under settings / saving and flagged as advanced
- LOCALIZATION: Update Russian translation
- WINDOWS: Provide default save / system / state / screenshot locations
- LOBBIES: Show what country the host is in
- MENU: Enable OSD text rendering for gdi and libcaca drivers
- WINDOWS 98/ME/2K: Set default directory for MSVC 2005 RetroArch version.

View File

@ -295,6 +295,11 @@ static bool default_auto_shaders_enable = true;
static bool default_sort_savefiles_enable = false;
static bool default_sort_savestates_enable = false;
static bool default_savestates_in_content_dir = false;
static bool default_savefiles_in_content_dir = false;
static bool default_systemfiles_in_content_dir = false;
static bool default_screenshots_in_content_dir = false;
#if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360)
static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3;
#elif defined(VITA)

View File

@ -1258,6 +1258,11 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("audio_wasapi_float_format", &settings->bools.audio_wasapi_float_format, true, wasapi_float_format, false);
#endif
SETTING_BOOL("savestates_in_content_dir", &settings->bools.savestates_in_content_dir, true, default_savestates_in_content_dir, false);
SETTING_BOOL("savefiles_in_content_dir", &settings->bools.savefiles_in_content_dir, true, default_savefiles_in_content_dir, false);
SETTING_BOOL("systemfiles_in_content_dir", &settings->bools.systemfiles_in_content_dir, true, default_systemfiles_in_content_dir, false);
SETTING_BOOL("screenshots_in_content_dir", &settings->bools.screenshots_in_content_dir, true, default_screenshots_in_content_dir, false);
if (global)
{
SETTING_BOOL("custom_bgm_enable", &global->console.sound.system_bgm_enable, true, false, false);

View File

@ -209,6 +209,11 @@ typedef struct settings
bool sort_savestates_enable;
bool config_save_on_exit;
bool show_hidden_files;
bool savefiles_in_content_dir;
bool savestates_in_content_dir;
bool screenshots_in_content_dir;
bool systemfiles_in_content_dir;
#ifdef HAVE_LAKKA
bool ssh_enable;
bool samba_enable;

View File

@ -1016,7 +1016,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
break;
case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY:
if (string_is_empty(settings->paths.directory_system))
if (string_is_empty(settings->paths.directory_system) || settings->bools.systemfiles_in_content_dir)
{
const char *fullpath = path_get(RARCH_PATH_CONTENT);
if (!string_is_empty(fullpath))
@ -1025,8 +1025,9 @@ bool rarch_environment_cb(unsigned cmd, void *data)
temp_path[0] = '\0';
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",
fullpath);
if (string_is_empty(settings->paths.directory_system))
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",
fullpath);
fill_pathname_basedir(temp_path, fullpath, sizeof(temp_path));
dir_set(RARCH_DIR_SYSTEM, temp_path);
}

View File

@ -1557,18 +1557,6 @@ static void frontend_unix_get_env(int *argc,
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS],
app_dir, "assets/wallpapers",
sizeof(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]));
if(!string_is_empty(downloads_dir) && test_permissions(downloads_dir))
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
downloads_dir, "",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
else
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
app_dir, "downloads",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
__android_log_print(ANDROID_LOG_INFO,
"RetroArch", "[ENV]: default download folder: [%s]",
@ -1576,8 +1564,7 @@ static void frontend_unix_get_env(int *argc,
switch (perms)
{
/* Set defaults for this since we can't guarantee
* saving on content dir will work in this case */
/* only sdcard/Android/data/com.retroarch is writable */
case INTERNAL_STORAGE_APPDIR_WRITABLE:
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SRAM],
internal_storage_app_path, "saves",
@ -1605,11 +1592,11 @@ static void frontend_unix_get_env(int *argc,
internal_storage_app_path, "cheats",
sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
if( !string_is_empty(screenshot_dir)
&& test_permissions(screenshot_dir))
if(!string_is_empty(screenshot_dir)
&& test_permissions(screenshot_dir))
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
screenshot_dir, "",
screenshot_dir, "RetroArch",
sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
}
else
@ -1619,10 +1606,24 @@ static void frontend_unix_get_env(int *argc,
sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
}
if(!string_is_empty(downloads_dir)
&& test_permissions(downloads_dir))
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
downloads_dir, "RetroArch",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
else
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
internal_storage_app_path, "downloads",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
break;
/* only the internal app dir is writable, this should never happen*/
case INTERNAL_STORAGE_NOT_WRITABLE:
/* Set defaults for this since we can't guarantee
* saving on content dir will work in this case. */
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SRAM],
app_dir, "saves",
sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
@ -1653,7 +1654,7 @@ static void frontend_unix_get_env(int *argc,
&& test_permissions(screenshot_dir))
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
screenshot_dir, "",
screenshot_dir, "RetroArch",
sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
}
else
@ -1663,10 +1664,40 @@ static void frontend_unix_get_env(int *argc,
sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
}
if(!string_is_empty(downloads_dir)
&& test_permissions(downloads_dir))
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
downloads_dir, "RetroArch",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
else
{
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
app_dir, "downloads",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
}
break;
/* sdcard is writable, this should be the case most of the time*/
case INTERNAL_STORAGE_WRITABLE:
/* Don't set defaults for saves, states, system or screenshots
in this case to be able to honour saving on content dir */
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SRAM],
internal_storage_path, "RetroArch/saves",
sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
internal_storage_path, "RetroArch/states",
sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
internal_storage_path, "RetroArch/system",
sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
internal_storage_path, "RetroArch/screenshots",
sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS],
internal_storage_path, "RetroArch/downloads",
sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG],
internal_storage_path, "RetroArch/config",
sizeof(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]));

View File

@ -278,9 +278,9 @@ static void frontend_win32_environment_get(int *argc, char *argv[],
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_PLAYLIST],
":\\playlists", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG],
":\\records_config", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
":\\config\\record", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_CONFIG]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT],
":\\records", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
":\\recordings", sizeof(g_defaults.dirs[DEFAULT_DIR_RECORD_OUTPUT]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG],
":\\config", sizeof(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_REMAP],
@ -303,6 +303,12 @@ static void frontend_win32_environment_get(int *argc, char *argv[],
":\\downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT],
":\\screenshots", sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SRAM],
":\\saves", sizeof(g_defaults.dirs[DEFAULT_DIR_SRAM]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
":\\states", sizeof(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]));
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_SYSTEM],
":\\system", sizeof(g_defaults.dirs[DEFAULT_DIR_SYSTEM]));
#ifdef HAVE_MENU
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)

View File

@ -909,6 +909,14 @@ MSG_HASH(MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE,
"sort_savefiles_enable")
MSG_HASH(MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE,
"sort_savestates_enable")
MSG_HASH(MENU_ENUM_LABEL_SAVEFILES_IN_CONTENT_DIR_ENABLE,
"savefiles_in_content_dir_enable")
MSG_HASH(MENU_ENUM_LABEL_SAVESTATES_IN_CONTENT_DIR_ENABLE,
"savestates_in_content_dir_enable")
MSG_HASH(MENU_ENUM_LABEL_SYSTEMFILES_IN_CONTENT_DIR_ENABLE,
"systemfiles_in_content_dir_enable")
MSG_HASH(MENU_ENUM_LABEL_SCREENSHOTS_IN_CONTENT_DIR_ENABLE,
"screenshots_in_content_dir_enable")
MSG_HASH(MENU_ENUM_LABEL_SSH_ENABLE,
"ssh_enable")
MSG_HASH(MENU_ENUM_LABEL_START_CORE,

View File

@ -1323,6 +1323,14 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE,
"Sort Saves In Folders")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE,
"Sort Savestates In Folders")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE,
"Write Savestates to Content Dir")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE,
"Write Saves to Content Dir")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE,
"System Files are in Content Dir")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE,
"Write Screenshots to Content Dir")
MSG_HASH(MENU_ENUM_LABEL_VALUE_SSH_ENABLE,
"SSH Enable")
MSG_HASH(MENU_ENUM_LABEL_VALUE_START_CORE,

View File

@ -4880,6 +4880,18 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVESTATE_THUMBNAIL_ENABLE,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVEFILES_IN_CONTENT_DIR_ENABLE,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVESTATES_IN_CONTENT_DIR_ENABLE,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SYSTEMFILES_IN_CONTENT_DIR_ENABLE,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SCREENSHOTS_IN_CONTENT_DIR_ENABLE,
PARSE_ONLY_BOOL, false);
info->need_refresh = true;
info->need_push = true;

View File

@ -3048,7 +3048,7 @@ static bool setting_append_list(
case SETTINGS_LIST_SAVING:
{
unsigned i;
struct bool_entry bool_entries[7];
struct bool_entry bool_entries[11];
START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS), parent_group);
parent_group = msg_hash_to_str(MENU_ENUM_LABEL_SAVING_SETTINGS);
@ -3098,6 +3098,30 @@ static bool setting_append_list(
bool_entries[6].default_value = savestate_thumbnail_enable;
bool_entries[6].flags = SD_FLAG_ADVANCED;
bool_entries[7].target = &settings->bools.savefiles_in_content_dir;
bool_entries[7].name_enum_idx = MENU_ENUM_LABEL_SAVEFILES_IN_CONTENT_DIR_ENABLE;
bool_entries[7].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE;
bool_entries[7].default_value = default_savefiles_in_content_dir;
bool_entries[7].flags = SD_FLAG_ADVANCED;
bool_entries[8].target = &settings->bools.savestates_in_content_dir;
bool_entries[8].name_enum_idx = MENU_ENUM_LABEL_SAVESTATES_IN_CONTENT_DIR_ENABLE;
bool_entries[8].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE;
bool_entries[8].default_value = default_savestates_in_content_dir;
bool_entries[8].flags = SD_FLAG_ADVANCED;
bool_entries[9].target = &settings->bools.systemfiles_in_content_dir;
bool_entries[9].name_enum_idx = MENU_ENUM_LABEL_SYSTEMFILES_IN_CONTENT_DIR_ENABLE;
bool_entries[9].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE;
bool_entries[9].default_value = default_systemfiles_in_content_dir;
bool_entries[9].flags = SD_FLAG_ADVANCED;
bool_entries[10].target = &settings->bools.screenshots_in_content_dir;
bool_entries[10].name_enum_idx = MENU_ENUM_LABEL_SCREENSHOTS_IN_CONTENT_DIR_ENABLE;
bool_entries[10].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE;
bool_entries[10].default_value = default_screenshots_in_content_dir;
bool_entries[10].flags = SD_FLAG_ADVANCED;
for (i = 0; i < ARRAY_SIZE(bool_entries); i++)
{
CONFIG_BOOL(
@ -6533,13 +6557,14 @@ static bool setting_append_list(
sizeof(settings->paths.directory_system),
MENU_ENUM_LABEL_SYSTEM_DIRECTORY,
MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY,
"",
g_defaults.dirs[DEFAULT_DIR_SYSTEM],
MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
@ -6577,13 +6602,14 @@ static bool setting_append_list(
sizeof(settings->paths.directory_dynamic_wallpapers),
MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY,
MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY,
"",
g_defaults.dirs[DEFAULT_DIR_WALLPAPERS],
MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
@ -6644,6 +6670,7 @@ static bool setting_append_list(
general_write_handler,
general_read_handler);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CORE_INFO_INIT);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
@ -6659,6 +6686,7 @@ static bool setting_append_list(
general_write_handler,
general_read_handler);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_CORE_INFO_INIT);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
#ifdef HAVE_LIBRETRODB
CONFIG_DIR(
@ -6750,6 +6778,7 @@ static bool setting_append_list(
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
if (string_is_not_equal_fast(settings->arrays.record_driver, "null", 4))
{
@ -6797,6 +6826,7 @@ static bool setting_append_list(
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
#endif
CONFIG_DIR(
@ -6835,13 +6865,14 @@ static bool setting_append_list(
sizeof(settings->paths.directory_input_remapping),
MENU_ENUM_LABEL_INPUT_REMAPPING_DIRECTORY,
MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY,
"",
g_defaults.dirs[DEFAULT_DIR_REMAP],
MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
@ -6864,13 +6895,14 @@ static bool setting_append_list(
dir_get_size(RARCH_DIR_SAVEFILE),
MENU_ENUM_LABEL_SAVEFILE_DIRECTORY,
MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY,
"",
g_defaults.dirs[DEFAULT_DIR_SRAM],
MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
@ -6878,13 +6910,14 @@ static bool setting_append_list(
dir_get_size(RARCH_DIR_SAVESTATE),
MENU_ENUM_LABEL_SAVESTATE_DIRECTORY,
MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY,
"",
g_defaults.dirs[DEFAULT_DIR_SAVESTATE],
MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,

View File

@ -1067,6 +1067,10 @@ enum msg_hash_enums
MENU_LABEL(NETPLAY_NAT_TRAVERSAL),
MENU_LABEL(SORT_SAVEFILES_ENABLE),
MENU_LABEL(SORT_SAVESTATES_ENABLE),
MENU_LABEL(SAVEFILES_IN_CONTENT_DIR_ENABLE),
MENU_LABEL(SAVESTATES_IN_CONTENT_DIR_ENABLE),
MENU_LABEL(SYSTEMFILES_IN_CONTENT_DIR_ENABLE),
MENU_LABEL(SCREENSHOTS_IN_CONTENT_DIR_ENABLE),
MENU_LABEL(NETPLAY_IP_ADDRESS),
MENU_LABEL(NETPLAY_PASSWORD),
MENU_LABEL(NETPLAY_SPECTATE_PASSWORD),

15
paths.c
View File

@ -67,6 +67,7 @@ void path_set_redirect(void)
const char *old_savefile_dir = dir_get(RARCH_DIR_SAVEFILE);
const char *old_savestate_dir = dir_get(RARCH_DIR_SAVESTATE);
rarch_system_info_t *info = runloop_get_system_info();
settings_t *settings = config_get_ptr();
new_savefile_dir[0] = new_savestate_dir[0] = '\0';
@ -93,10 +94,8 @@ void path_set_redirect(void)
if (check_library_name_hash)
{
settings_t *settings = config_get_ptr();
/* per-core saves: append the library_name to the save location */
if ( settings->bools.sort_savefiles_enable
if (settings->bools.sort_savefiles_enable
&& !string_is_empty(old_savefile_dir))
{
fill_pathname_join(
@ -154,13 +153,21 @@ void path_set_redirect(void)
}
/* Set savefile directory if empty based on content directory */
if (string_is_empty(new_savefile_dir))
if (string_is_empty(new_savefile_dir) || settings->bools.savefiles_in_content_dir)
{
strlcpy(new_savefile_dir, path_main_basename,
sizeof(new_savefile_dir));
path_basedir(new_savefile_dir);
}
/* Set savestate directory if empty based on content directory */
if (string_is_empty(new_savestate_dir) || settings->bools.savestates_in_content_dir)
{
strlcpy(new_savestate_dir, path_main_basename,
sizeof(new_savestate_dir));
path_basedir(new_savestate_dir);
}
if (global)
{
if(path_is_directory(new_savefile_dir))

View File

@ -211,7 +211,7 @@ static bool screenshot_dump(
screenshot_path[0] = '\0';
if (string_is_empty(screenshot_dir))
if (string_is_empty(screenshot_dir) || settings->bools.screenshots_in_content_dir)
{
fill_pathname_basedir(screenshot_path, name_base,
sizeof(screenshot_path));