1
0
mirror of https://github.com/libretro/RetroArch synced 2025-02-23 15:40:35 +00:00

(Linux) Reimplement fork mode functionality

This commit is contained in:
twinaphex 2016-02-05 17:58:50 +01:00
parent d9113b8bc4
commit 5f3ae10f20

@ -67,8 +67,7 @@ static uint64_t g_cpuFeatures;
static int g_cpuCount;
#ifndef HAVE_DYNAMIC
static bool exit_spawn = false;
static bool exitspawn_start_game = false;
static enum frontend_fork linux_fork_mode = FRONTEND_FORK_NONE;
#endif
#ifdef __arm__
@ -2126,13 +2125,19 @@ static bool frontend_linux_set_fork(enum frontend_fork fork_mode)
switch (fork_mode)
{
case FRONTEND_FORK_CORE:
exit_spawn = true;
RARCH_LOG("FRONTEND_FORK_CORE\n");
linux_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");
linux_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. */
linux_fork_mode = FRONTEND_FORK_CORE;
break;
case FRONTEND_FORK_NONE:
default:
return false;
@ -2156,11 +2161,21 @@ static void frontend_linux_exec(const char *path, bool should_load_game)
static void frontend_linux_exitspawn(char *core_path, size_t core_path_size)
{
bool should_load_game = exitspawn_start_game;
bool should_load_game = false;
if (!exit_spawn)
if (linux_fork_mode == FRONTEND_FORK_NONE)
return;
switch (linux_fork_mode)
{
case FRONTEND_FORK_CORE_WITH_ARGS:
should_load_game = true;
break;
case FRONTEND_FORK_NONE:
default:
break;
}
frontend_linux_exec(core_path, should_load_game);
}
#endif