(PSP) Refactor fork mode

This commit is contained in:
twinaphex 2016-02-05 18:43:23 +01:00
parent 9e497c1b11
commit 17f885d158
1 changed files with 27 additions and 8 deletions

View File

@ -62,8 +62,7 @@ PSP_HEAP_SIZE_MAX();
char eboot_path[512]; char eboot_path[512];
static bool exit_spawn = false; static enum frontend_fork psp_fork_mode = FRONTEND_FORK_NONE;
static bool exitspawn_start_game = false;
static void frontend_psp_get_environment_settings(int *argc, char *argv[], static void frontend_psp_get_environment_settings(int *argc, char *argv[],
void *args, void *params_data) void *args, void *params_data)
@ -269,18 +268,25 @@ static void frontend_psp_exec(const char *path, bool should_load_game)
#endif #endif
} }
#ifndef IS_SALAMANDER
static bool frontend_psp_set_fork(enum frontend_fork fork_mode) static bool frontend_psp_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");
psp_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; psp_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. */
psp_fork_mode = FRONTEND_FORK_CORE;
break;
case FRONTEND_FORK_NONE: case FRONTEND_FORK_NONE:
default: default:
return false; return false;
@ -288,15 +294,24 @@ static bool frontend_psp_set_fork(enum frontend_fork fork_mode)
return true; return true;
} }
#endif
static void frontend_psp_exitspawn(char *s, size_t len) static void frontend_psp_exitspawn(char *s, size_t len)
{ {
bool should_load_game = false; bool should_load_game = false;
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
should_load_game = exitspawn_start_game; if (psp_fork_mode == FRONTEND_FORK_NONE)
if (!exit_spawn)
return; return;
switch (psp_fork_mode)
{
case FRONTEND_FORK_CORE_WITH_ARGS:
should_load_game = true;
break;
case FRONTEND_FORK_NONE:
default:
break;
}
#endif #endif
frontend_psp_exec(s, should_load_game); frontend_psp_exec(s, should_load_game);
} }
@ -378,7 +393,11 @@ frontend_ctx_driver_t frontend_ctx_psp = {
frontend_psp_exitspawn, frontend_psp_exitspawn,
NULL, /* process_args */ NULL, /* process_args */
frontend_psp_exec, frontend_psp_exec,
#ifdef IS_SALAMANDER
NULL,
#else
frontend_psp_set_fork, frontend_psp_set_fork,
#endif
frontend_psp_shutdown, frontend_psp_shutdown,
NULL, /* get_name */ NULL, /* get_name */
NULL, /* get_os */ NULL, /* get_os */