mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Reimplement frontend_driver_set_fork
This commit is contained in:
parent
332f48f2df
commit
7a5db5a73a
@ -922,7 +922,7 @@ bool event_cmd_exec(void *data)
|
|||||||
#if defined(HAVE_DYNAMIC)
|
#if defined(HAVE_DYNAMIC)
|
||||||
rarch_ctl(RARCH_CTL_LOAD_CONTENT, NULL);
|
rarch_ctl(RARCH_CTL_LOAD_CONTENT, NULL);
|
||||||
#else
|
#else
|
||||||
frontend_driver_set_fork(true, true, false);
|
frontend_driver_set_fork(FRONTEND_FORK_CORE_WITH_ARGS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1375,7 +1375,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
|||||||
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
|
rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL);
|
||||||
break;
|
break;
|
||||||
case EVENT_CMD_RESTART_RETROARCH:
|
case EVENT_CMD_RESTART_RETROARCH:
|
||||||
if (!frontend_driver_set_fork(true, false, true))
|
if (!frontend_driver_set_fork(FRONTEND_FORK_SALAMANDER_RESTART))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case EVENT_CMD_MENU_SAVE_CURRENT_CONFIG:
|
case EVENT_CMD_MENU_SAVE_CURRENT_CONFIG:
|
||||||
|
@ -370,27 +370,38 @@ static void frontend_gx_process_args(int *argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
static bool frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
|
static bool frontend_gx_set_fork(enum frontend_fork fork_mode)
|
||||||
{
|
{
|
||||||
#ifndef IS_SALAMANDER
|
switch (fork_mode)
|
||||||
if (restart)
|
|
||||||
{
|
{
|
||||||
char new_path[PATH_MAX_LENGTH];
|
case FRONTEND_FORK_CORE:
|
||||||
char salamander_name[PATH_MAX_LENGTH];
|
exit_spawn = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_CORE_WITH_ARGS:
|
||||||
|
exit_spawn = true;
|
||||||
|
exitspawn_start_game = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_SALAMANDER_RESTART:
|
||||||
|
#ifndef IS_SALAMANDER
|
||||||
|
{
|
||||||
|
char new_path[PATH_MAX_LENGTH];
|
||||||
|
char salamander_name[PATH_MAX_LENGTH];
|
||||||
|
|
||||||
if (frontend_driver_get_salamander_basename(salamander_name,
|
if (frontend_driver_get_salamander_basename(salamander_name,
|
||||||
sizeof(salamander_name)))
|
sizeof(salamander_name)))
|
||||||
{
|
{
|
||||||
fill_pathname_join(new_path, g_defaults.dir.core,
|
fill_pathname_join(new_path, g_defaults.dir.core,
|
||||||
salamander_name, sizeof(new_path));
|
salamander_name, sizeof(new_path));
|
||||||
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
|
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
exit_spawn = true;
|
||||||
#endif
|
#endif
|
||||||
|
break;
|
||||||
exit_spawn = exitspawn;
|
default:
|
||||||
exitspawn_start_game = start_game;
|
case FRONTEND_FORK_NONE:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef IS_SALAMANDER
|
#ifndef IS_SALAMANDER
|
||||||
rarch_ctl(RARCH_CTL_FORCE_QUIT, NULL);
|
rarch_ctl(RARCH_CTL_FORCE_QUIT, NULL);
|
||||||
|
@ -2121,14 +2121,22 @@ static int frontend_android_parse_drive_list(void *data)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_DYNAMIC
|
#ifndef HAVE_DYNAMIC
|
||||||
static bool frontend_linux_set_fork(bool exitspawn,
|
static bool frontend_linux_set_fork(enum frontend_fork fork_mode)
|
||||||
bool start_game, bool restart)
|
|
||||||
{
|
{
|
||||||
exit_spawn = exitspawn;
|
switch (fork_mode)
|
||||||
exitspawn_start_game = start_game;
|
{
|
||||||
|
case FRONTEND_FORK_CORE:
|
||||||
if (restart) /* not implemented */
|
exit_spawn = true;
|
||||||
return false;
|
break;
|
||||||
|
case FRONTEND_FORK_CORE_WITH_ARGS:
|
||||||
|
exit_spawn = true;
|
||||||
|
exitspawn_start_game = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_SALAMANDER_RESTART:
|
||||||
|
case FRONTEND_FORK_NONE:
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -328,10 +328,22 @@ static void frontend_ps3_deinit(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef IS_SALAMANDER
|
#ifndef IS_SALAMANDER
|
||||||
static bool frontend_ps3_set_fork(bool exit, bool start_game, bool restart)
|
static bool frontend_ps3_set_fork(enum frontend_fork fork_mode)
|
||||||
{
|
{
|
||||||
exit_spawn = exitspawn;
|
switch (fork_mode)
|
||||||
exitspawn_start_game = start_game;
|
{
|
||||||
|
case FRONTEND_FORK_CORE:
|
||||||
|
exit_spawn = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_CORE_WITH_ARGS:
|
||||||
|
exit_spawn = true;
|
||||||
|
exitspawn_start_game = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_SALAMANDER_RESTART:
|
||||||
|
case FRONTEND_FORK_NONE:
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -269,10 +269,22 @@ static void frontend_psp_exec(const char *path, bool should_load_game)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool frontend_psp_set_fork(bool exit, bool start_game, bool restart)
|
static bool frontend_psp_set_fork(enum frontend_fork fork_mode)
|
||||||
{
|
{
|
||||||
exit_spawn = true;
|
switch (fork_mode)
|
||||||
exitspawn_start_game = start_game;
|
{
|
||||||
|
case FRONTEND_FORK_CORE:
|
||||||
|
exit_spawn = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_CORE_WITH_ARGS:
|
||||||
|
exit_spawn = true;
|
||||||
|
exitspawn_start_game = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_SALAMANDER_RESTART:
|
||||||
|
case FRONTEND_FORK_NONE:
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1292,10 +1292,22 @@ static void frontend_xdk_exec(const char *path, bool should_load_game)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool frontend_xdk_set_fork(bool exit, bool start_game, bool restart)
|
static bool frontend_xdk_set_fork(enum frontend_fork fork_mode)
|
||||||
{
|
{
|
||||||
exit_spawn = exit;
|
switch (fork_mode)
|
||||||
exitspawn_start_game = start_game;
|
{
|
||||||
|
case FRONTEND_FORK_CORE:
|
||||||
|
exit_spawn = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_CORE_WITH_ARGS:
|
||||||
|
exit_spawn = true;
|
||||||
|
exitspawn_start_game = true;
|
||||||
|
break;
|
||||||
|
case FRONTEND_FORK_NONE:
|
||||||
|
case FRONTEND_FORK_SALAMANDER_RESTART:
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -214,13 +214,13 @@ bool frontend_driver_has_fork(void)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool frontend_driver_set_fork(bool a, bool b, bool restart)
|
bool frontend_driver_set_fork(enum frontend_fork fork_mode)
|
||||||
{
|
{
|
||||||
frontend_ctx_driver_t *frontend = frontend_get_ptr();
|
frontend_ctx_driver_t *frontend = frontend_get_ptr();
|
||||||
|
|
||||||
if (!frontend_driver_has_fork())
|
if (!frontend_driver_has_fork())
|
||||||
return false;
|
return false;
|
||||||
return frontend->set_fork(a, b, restart);
|
return frontend->set_fork(fork_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void frontend_driver_process_args(int *argc, char *argv[])
|
void frontend_driver_process_args(int *argc, char *argv[])
|
||||||
|
@ -40,6 +40,14 @@ enum frontend_powerstate
|
|||||||
FRONTEND_POWERSTATE_ON_POWER_SOURCE
|
FRONTEND_POWERSTATE_ON_POWER_SOURCE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum frontend_fork
|
||||||
|
{
|
||||||
|
FRONTEND_FORK_NONE = 0,
|
||||||
|
FRONTEND_FORK_CORE,
|
||||||
|
FRONTEND_FORK_CORE_WITH_ARGS,
|
||||||
|
FRONTEND_FORK_SALAMANDER_RESTART
|
||||||
|
};
|
||||||
|
|
||||||
enum frontend_architecture
|
enum frontend_architecture
|
||||||
{
|
{
|
||||||
FRONTEND_ARCH_NONE = 0,
|
FRONTEND_ARCH_NONE = 0,
|
||||||
@ -64,7 +72,7 @@ typedef struct frontend_ctx_driver
|
|||||||
|
|
||||||
process_args_t process_args;
|
process_args_t process_args;
|
||||||
void (*exec)(const char *, bool);
|
void (*exec)(const char *, bool);
|
||||||
bool (*set_fork)(bool exitspawn, bool start_game, bool restart);
|
bool (*set_fork)(enum frontend_fork fork_mode);
|
||||||
void (*shutdown)(bool);
|
void (*shutdown)(bool);
|
||||||
void (*get_name)(char *, size_t);
|
void (*get_name)(char *, size_t);
|
||||||
void (*get_os)(char *, size_t, int *major, int *minor);
|
void (*get_os)(char *, size_t, int *major, int *minor);
|
||||||
@ -116,7 +124,7 @@ int frontend_driver_parse_drive_list(void *data);
|
|||||||
|
|
||||||
void frontend_driver_content_loaded(void);
|
void frontend_driver_content_loaded(void);
|
||||||
|
|
||||||
bool frontend_driver_set_fork(bool a, bool b, bool restart);
|
bool frontend_driver_set_fork(enum frontend_fork fork_mode);
|
||||||
|
|
||||||
void frontend_driver_process_args(int *argc, char *argv[]);
|
void frontend_driver_process_args(int *argc, char *argv[]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user