(PS3) Reimplement set_fork_mode

This commit is contained in:
twinaphex 2016-02-05 18:40:24 +01:00
parent d59ffbdd2c
commit 9e497c1b11

View File

@ -56,8 +56,7 @@ static bool multiman_detected = false;
#endif #endif
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
static bool exit_spawn = false; static enum frontend_fork ps3_fork_mode = FRONTEND_FORK_NONE;
static bool exitspawn_start_game = false;
static void frontend_ps3_shutdown(bool unused) static void frontend_ps3_shutdown(bool unused)
{ {
@ -333,13 +332,19 @@ static bool frontend_ps3_set_fork(enum frontend_fork fork_mode)
switch (fork_mode) switch (fork_mode)
{ {
case FRONTEND_FORK_CORE: case FRONTEND_FORK_CORE:
exit_spawn = true; RARCH_LOG("FRONTEND_FORK_CORE\n");
ps3_fork_mode = fork_mode;
break; break;
case FRONTEND_FORK_CORE_WITH_ARGS: case FRONTEND_FORK_CORE_WITH_ARGS:
exit_spawn = true; RARCH_LOG("FRONTEND_FORK_CORE_WITH_ARGS\n");
exitspawn_start_game = true; ps3_fork_mode = fork_mode;
break; break;
case FRONTEND_FORK_SALAMANDER_RESTART: case FRONTEND_FORK_SALAMANDER_RESTART:
RARCH_LOG("FRONTEND_FORK_SALAMANDER_RESTART\n");
/* NOTE: We don't implement Salamander, so just turn
* this into FRONTEND_FORK_CORE. */
ps3_fork_mode = FRONTEND_FORK_CORE;
break;
case FRONTEND_FORK_NONE: case FRONTEND_FORK_NONE:
default: default:
return false; return false;
@ -429,12 +434,9 @@ static void frontend_ps3_exitspawn(char *core_path, size_t core_path_size)
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
bool *verbose = retro_main_verbosity(); bool *verbose = retro_main_verbosity();
bool original_verbose = *verbose; bool original_verbose = *verbose;
*verbose = true; *verbose = true;
should_load_game = exitspawn_start_game; if (ps3_fork_mode == FRONTEND_FORK_NONE)
if (!exit_spawn)
{ {
frontend_ctx_driver_t *frontend = frontend_get_ptr(); frontend_ctx_driver_t *frontend = frontend_get_ptr();
@ -442,6 +444,16 @@ static void frontend_ps3_exitspawn(char *core_path, size_t core_path_size)
frontend->shutdown = frontend_ps3_shutdown; frontend->shutdown = frontend_ps3_shutdown;
return; return;
} }
switch (ps3_fork_mode)
{
case FRONTEND_FORK_CORE_WITH_ARGS:
should_load_game = true;
break;
case FRONTEND_FORK_NONE:
default:
break;
}
#endif #endif
frontend_ps3_exec(core_path, should_load_game); frontend_ps3_exec(core_path, should_load_game);