This commit is contained in:
twinaphex 2015-01-14 22:19:15 +01:00
parent b2e413f0f3
commit 0be0642680

View File

@ -674,7 +674,9 @@ static void set_paths(const char *path)
/* If this is already set, do not overwrite it /* If this is already set, do not overwrite it
* as this was initialized before in a menu or otherwise. */ * as this was initialized before in a menu or otherwise. */
if (!*g_settings.system_directory) if (*g_settings.system_directory)
return;
fill_pathname_basedir(g_settings.system_directory, path, fill_pathname_basedir(g_settings.system_directory, path,
sizeof(g_settings.system_directory)); sizeof(g_settings.system_directory));
} }
@ -1118,6 +1120,7 @@ static void init_controllers(void)
{ {
/* If we're trying to connect a completely unknown device, /* If we're trying to connect a completely unknown device,
* revert back to JOYPAD. */ * revert back to JOYPAD. */
if (device != RETRO_DEVICE_JOYPAD && device != RETRO_DEVICE_NONE) if (device != RETRO_DEVICE_JOYPAD && device != RETRO_DEVICE_NONE)
{ {
/* Do not fix g_settings.input.libretro_device[i], /* Do not fix g_settings.input.libretro_device[i],
@ -1129,19 +1132,22 @@ static void init_controllers(void)
ident = "Joypad"; ident = "Joypad";
} }
if (device == RETRO_DEVICE_NONE) switch (device)
{ {
case RETRO_DEVICE_NONE:
RARCH_LOG("Disconnecting device from port %u.\n", i + 1); RARCH_LOG("Disconnecting device from port %u.\n", i + 1);
pretro_set_controller_port_device(i, device); pretro_set_controller_port_device(i, device);
} break;
else if (device != RETRO_DEVICE_JOYPAD) case RETRO_DEVICE_JOYPAD:
{ break;
default:
/* Some cores do not properly range check port argument. /* Some cores do not properly range check port argument.
* This is broken behavior of course, but avoid breaking * This is broken behavior of course, but avoid breaking
* cores needlessly. */ * cores needlessly. */
RARCH_LOG("Connecting %s (ID: %u) to port %u.\n", ident, RARCH_LOG("Connecting %s (ID: %u) to port %u.\n", ident,
device, i + 1); device, i + 1);
pretro_set_controller_port_device(i, device); pretro_set_controller_port_device(i, device);
break;
} }
} }
} }
@ -1253,20 +1259,20 @@ static void init_movie(void)
g_extern.bsv.movie_start_path); g_extern.bsv.movie_start_path);
msg_queue_clear(g_extern.msg_queue); msg_queue_clear(g_extern.msg_queue);
if ((g_extern.bsv.movie = bsv_movie_init(g_extern.bsv.movie_start_path,
if (!(g_extern.bsv.movie = bsv_movie_init(g_extern.bsv.movie_start_path,
RARCH_MOVIE_RECORD))) RARCH_MOVIE_RECORD)))
{ {
msg_queue_push(g_extern.msg_queue, "Failed to start movie record.", 1, 180);
RARCH_ERR("Failed to start movie record.\n");
return;
}
msg_queue_push(g_extern.msg_queue, msg, 1, 180); msg_queue_push(g_extern.msg_queue, msg, 1, 180);
RARCH_LOG("Starting movie record to \"%s\".\n", RARCH_LOG("Starting movie record to \"%s\".\n",
g_extern.bsv.movie_start_path); g_extern.bsv.movie_start_path);
g_settings.rewind_granularity = 1; g_settings.rewind_granularity = 1;
} }
else
{
msg_queue_push(g_extern.msg_queue, "Failed to start movie record.", 1, 180);
RARCH_ERR("Failed to start movie record.\n");
}
}
} }
#define RARCH_DEFAULT_PORT 55435 #define RARCH_DEFAULT_PORT 55435
@ -1363,8 +1369,9 @@ static void init_autosave(void)
const char *path = g_extern.savefiles->elems[i].data; const char *path = g_extern.savefiles->elems[i].data;
unsigned type = g_extern.savefiles->elems[i].attr.i; unsigned type = g_extern.savefiles->elems[i].attr.i;
if (pretro_get_memory_size(type) > 0) if (pretro_get_memory_size(type) <= 0)
{ continue;
g_extern.autosave[i] = autosave_new(path, g_extern.autosave[i] = autosave_new(path,
pretro_get_memory_data(type), pretro_get_memory_data(type),
pretro_get_memory_size(type), pretro_get_memory_size(type),
@ -1372,7 +1379,6 @@ static void init_autosave(void)
if (!g_extern.autosave[i]) if (!g_extern.autosave[i])
RARCH_WARN(RETRO_LOG_INIT_AUTOSAVE_FAILED); RARCH_WARN(RETRO_LOG_INIT_AUTOSAVE_FAILED);
} }
}
} }
static void deinit_autosave(void) static void deinit_autosave(void)
@ -1531,8 +1537,9 @@ static void fill_pathnames(void)
fill_pathname(g_extern.bsv.movie_path, g_extern.savefile_name, "", fill_pathname(g_extern.bsv.movie_path, g_extern.savefile_name, "",
sizeof(g_extern.bsv.movie_path)); sizeof(g_extern.bsv.movie_path));
if (*g_extern.basename) if (!*g_extern.basename)
{ return;
if (!*g_extern.ups_name) if (!*g_extern.ups_name)
fill_pathname_noext(g_extern.ups_name, g_extern.basename, ".ups", fill_pathname_noext(g_extern.ups_name, g_extern.basename, ".ups",
sizeof(g_extern.ups_name)); sizeof(g_extern.ups_name));
@ -1542,12 +1549,13 @@ static void fill_pathnames(void)
if (!*g_extern.ips_name) if (!*g_extern.ips_name)
fill_pathname_noext(g_extern.ips_name, g_extern.basename, ".ips", fill_pathname_noext(g_extern.ips_name, g_extern.basename, ".ips",
sizeof(g_extern.ips_name)); sizeof(g_extern.ips_name));
}
} }
static void load_auto_state(void) static void load_auto_state(void)
{ {
char msg[PATH_MAX_LENGTH];
char savestate_name_auto[PATH_MAX_LENGTH]; char savestate_name_auto[PATH_MAX_LENGTH];
bool ret;
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
if (g_extern.netplay_enable && !g_extern.netplay_is_spectate) if (g_extern.netplay_enable && !g_extern.netplay_is_spectate)
@ -1560,10 +1568,10 @@ static void load_auto_state(void)
fill_pathname_noext(savestate_name_auto, g_extern.savestate_name, fill_pathname_noext(savestate_name_auto, g_extern.savestate_name,
".auto", sizeof(savestate_name_auto)); ".auto", sizeof(savestate_name_auto));
if (path_file_exists(savestate_name_auto)) if (!path_file_exists(savestate_name_auto))
{ return;
char msg[PATH_MAX_LENGTH];
bool ret = load_state(savestate_name_auto); ret = load_state(savestate_name_auto);
RARCH_LOG("Found auto savestate in: %s\n", savestate_name_auto); RARCH_LOG("Found auto savestate in: %s\n", savestate_name_auto);
@ -1571,11 +1579,11 @@ static void load_auto_state(void)
savestate_name_auto, ret ? "succeeded" : "failed"); savestate_name_auto, ret ? "succeeded" : "failed");
msg_queue_push(g_extern.msg_queue, msg, 1, 180); msg_queue_push(g_extern.msg_queue, msg, 1, 180);
RARCH_LOG("%s\n", msg); RARCH_LOG("%s\n", msg);
}
} }
static bool save_auto_state(void) static bool save_auto_state(void)
{ {
bool ret;
char savestate_name_auto[PATH_MAX_LENGTH]; char savestate_name_auto[PATH_MAX_LENGTH];
if (!g_settings.savestate_auto_save || g_extern.libretro_dummy || if (!g_settings.savestate_auto_save || g_extern.libretro_dummy ||
@ -1585,7 +1593,7 @@ static bool save_auto_state(void)
fill_pathname_noext(savestate_name_auto, g_extern.savestate_name, fill_pathname_noext(savestate_name_auto, g_extern.savestate_name,
".auto", sizeof(savestate_name_auto)); ".auto", sizeof(savestate_name_auto));
bool ret = save_state(savestate_name_auto); ret = save_state(savestate_name_auto);
RARCH_LOG("Auto save state to \"%s\" %s.\n", savestate_name_auto, ret ? RARCH_LOG("Auto save state to \"%s\" %s.\n", savestate_name_auto, ret ?
"succeeded" : "failed"); "succeeded" : "failed");
@ -1841,16 +1849,17 @@ static void check_disk_next(
{ {
unsigned num_disks = control->get_num_images(); unsigned num_disks = control->get_num_images();
unsigned current = control->get_image_index(); unsigned current = control->get_image_index();
bool check_disk_next = num_disks && num_disks != UINT_MAX;
if (num_disks && num_disks != UINT_MAX) if (!check_disk_next)
{ {
unsigned new_idx = current;
if (current < num_disks - 1)
new_idx++;
rarch_disk_control_set_index(new_idx);
}
else
RARCH_ERR("Got invalid disk index from libretro.\n"); RARCH_ERR("Got invalid disk index from libretro.\n");
return;
}
if (current < num_disks - 1)
current++;
rarch_disk_control_set_index(current);
} }
/** /**
@ -1864,15 +1873,17 @@ static void check_disk_prev(
{ {
unsigned num_disks = control->get_num_images(); unsigned num_disks = control->get_num_images();
unsigned current = control->get_image_index(); unsigned current = control->get_image_index();
if (num_disks && num_disks != UINT_MAX) bool check_disk_prev = num_disks && num_disks != UINT_MAX;
if (!check_disk_prev)
{ {
unsigned new_idx = current;
if (current > 0)
new_idx--;
rarch_disk_control_set_index(new_idx);
}
else
RARCH_ERR("Got invalid disk index from libretro.\n"); RARCH_ERR("Got invalid disk index from libretro.\n");
return;
}
if (current > 0)
current--;
rarch_disk_control_set_index(current);
} }
static void init_state(void) static void init_state(void)
@ -2084,8 +2095,9 @@ static bool init_content(void)
if (!init_content_file()) if (!init_content_file())
return false; return false;
if (!g_extern.libretro_no_content) if (g_extern.libretro_no_content)
{ return true;
set_savestate_auto_index(); set_savestate_auto_index();
if (load_save_files()) if (load_save_files())
@ -2095,7 +2107,6 @@ static bool init_content(void)
rarch_main_command(RARCH_CMD_BSV_MOVIE_INIT); rarch_main_command(RARCH_CMD_BSV_MOVIE_INIT);
rarch_main_command(RARCH_CMD_NETPLAY_INIT); rarch_main_command(RARCH_CMD_NETPLAY_INIT);
}
return true; return true;
} }