From 17f885d1581a088338fe37a41a5c49c369d33c19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 5 Feb 2016 18:43:23 +0100 Subject: [PATCH] (PSP) Refactor fork mode --- frontend/drivers/platform_psp.c | 35 +++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 22a50ce18d..cc3752322c 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -62,8 +62,7 @@ PSP_HEAP_SIZE_MAX(); char eboot_path[512]; -static bool exit_spawn = false; -static bool exitspawn_start_game = false; +static enum frontend_fork psp_fork_mode = FRONTEND_FORK_NONE; static void frontend_psp_get_environment_settings(int *argc, char *argv[], void *args, void *params_data) @@ -269,18 +268,25 @@ static void frontend_psp_exec(const char *path, bool should_load_game) #endif } +#ifndef IS_SALAMANDER static bool frontend_psp_set_fork(enum frontend_fork fork_mode) { switch (fork_mode) { case FRONTEND_FORK_CORE: - exit_spawn = true; + RARCH_LOG("FRONTEND_FORK_CORE\n"); + psp_fork_mode = fork_mode; break; case FRONTEND_FORK_CORE_WITH_ARGS: - exit_spawn = true; - exitspawn_start_game = true; + RARCH_LOG("FRONTEND_FORK_CORE_WITH_ARGS\n"); + psp_fork_mode = fork_mode; break; 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: default: return false; @@ -288,15 +294,24 @@ static bool frontend_psp_set_fork(enum frontend_fork fork_mode) return true; } +#endif static void frontend_psp_exitspawn(char *s, size_t len) { bool should_load_game = false; #ifndef IS_SALAMANDER - should_load_game = exitspawn_start_game; - - if (!exit_spawn) + if (psp_fork_mode == FRONTEND_FORK_NONE) return; + + switch (psp_fork_mode) + { + case FRONTEND_FORK_CORE_WITH_ARGS: + should_load_game = true; + break; + case FRONTEND_FORK_NONE: + default: + break; + } #endif frontend_psp_exec(s, should_load_game); } @@ -378,7 +393,11 @@ frontend_ctx_driver_t frontend_ctx_psp = { frontend_psp_exitspawn, NULL, /* process_args */ frontend_psp_exec, +#ifdef IS_SALAMANDER + NULL, +#else frontend_psp_set_fork, +#endif frontend_psp_shutdown, NULL, /* get_name */ NULL, /* get_os */