Preserve sram/state dir on reentrancy.

This commit is contained in:
Themaister 2013-04-16 12:22:27 +02:00
parent db183b5d97
commit fa5e8b646c
4 changed files with 14 additions and 2 deletions

View File

@ -61,8 +61,8 @@ int main(int argc, char *argv[])
args.verbose = g_extern.verbose;
args.config_path = *g_extern.config_path ? g_extern.config_path : NULL;
args.sram_path = NULL;
args.state_path = NULL;
args.sram_path = *g_extern.savefile_dir ? g_extern.savefile_dir : NULL;
args.state_path = *g_extern.savestate_dir ? g_extern.savestate_dir : NULL;
args.rom_path = g_extern.fullpath;
args.libretro_path = g_settings.libretro;

View File

@ -342,6 +342,10 @@ struct global
char savestate_name[PATH_MAX];
char xml_name[PATH_MAX];
// Used on reentrancy to use a savestate dir.
char savefile_dir[PATH_MAX];
char savestate_dir[PATH_MAX];
bool block_patch;
bool ups_pref;
bool bps_pref;

View File

@ -1178,6 +1178,12 @@ static void parse_input(int argc, char *argv[])
set_paths(argv[optind]);
else
verify_stdin_paths();
// Copy SRM/state dirs used, so they can be reused on reentrancy.
if (g_extern.has_set_save_path && path_is_directory(g_extern.savefile_name_srm))
strlcpy(g_extern.savefile_dir, g_extern.savefile_name_srm, sizeof(g_extern.savefile_dir));
if (g_extern.has_set_state_path && path_is_directory(g_extern.savestate_name))
strlcpy(g_extern.savestate_dir, g_extern.savestate_name, sizeof(g_extern.savestate_dir));
}
static void init_controllers(void)

View File

@ -668,6 +668,7 @@ bool config_load_file(const char *path)
{
if (path_is_directory(tmp_str))
{
strlcpy(g_extern.savefile_dir, tmp_str, sizeof(g_extern.savefile_dir));
strlcpy(g_extern.savefile_name_srm, tmp_str, sizeof(g_extern.savefile_name_srm));
fill_pathname_dir(g_extern.savefile_name_srm, g_extern.basename, ".srm", sizeof(g_extern.savefile_name_srm));
}
@ -679,6 +680,7 @@ bool config_load_file(const char *path)
{
if (path_is_directory(tmp_str))
{
strlcpy(g_extern.savestate_dir, tmp_str, sizeof(g_extern.savestate_dir));
strlcpy(g_extern.savestate_name, tmp_str, sizeof(g_extern.savestate_name));
fill_pathname_dir(g_extern.savestate_name, g_extern.basename, ".state", sizeof(g_extern.savestate_name));
}