Add param to set_fork - for restart

This commit is contained in:
twinaphex 2016-01-13 11:16:03 +01:00
parent b5b8886894
commit 457ce1ddf0
8 changed files with 24 additions and 14 deletions

View File

@ -1314,7 +1314,7 @@ bool event_command(enum event_command cmd)
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:
frontend_driver_set_fork(true, false); frontend_driver_set_fork(true, false, true);
break; break;
case EVENT_CMD_MENU_SAVE_CURRENT_CONFIG: case EVENT_CMD_MENU_SAVE_CURRENT_CONFIG:
event_save_current_config(); event_save_current_config();

View File

@ -1231,7 +1231,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
} }
#if defined(RARCH_CONSOLE) #if defined(RARCH_CONSOLE)
frontend_driver_set_fork(true, true); frontend_driver_set_fork(true, true, false);
#elif defined(HAVE_DYNAMIC) #elif defined(HAVE_DYNAMIC)
rarch_ctl(RARCH_CTL_LOAD_CONTENT, NULL); rarch_ctl(RARCH_CTL_LOAD_CONTENT, NULL);
#endif #endif

View File

@ -364,12 +364,15 @@ static void frontend_gx_process_args(int *argc, char *argv[])
#endif #endif
} }
static void frontend_gx_set_fork(bool exitspawn, bool start_game) static void frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
{ {
#if defined(HW_RVL) && !defined(IS_SALAMANDER) #if defined(HW_RVL) && !defined(IS_SALAMANDER)
if (restart)
{
char new_path[PATH_MAX_LENGTH]; char new_path[PATH_MAX_LENGTH];
fill_pathname_join(new_path, g_defaults.dir.core, SALAMANDER_FILE, sizeof(new_path)); fill_pathname_join(new_path, g_defaults.dir.core, SALAMANDER_FILE, sizeof(new_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path); runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
}
#endif #endif
exit_spawn = exitspawn; exit_spawn = exitspawn;
@ -413,6 +416,13 @@ static int frontend_gx_parse_drive_list(void *data)
return 0; return 0;
} }
static void frontend_gx_shutdown(bool unused)
{
#ifndef IS_SALAMANDER
exit(0);
#endif
}
frontend_ctx_driver_t frontend_ctx_gx = { frontend_ctx_driver_t frontend_ctx_gx = {
frontend_gx_get_environment_settings, frontend_gx_get_environment_settings,
frontend_gx_init, frontend_gx_init,
@ -421,7 +431,7 @@ frontend_ctx_driver_t frontend_ctx_gx = {
frontend_gx_process_args, frontend_gx_process_args,
frontend_gx_exec, frontend_gx_exec,
frontend_gx_set_fork, frontend_gx_set_fork,
NULL, /* shutdown */ frontend_gx_shutdown,
NULL, /* get_name */ NULL, /* get_name */
NULL, /* get_os */ NULL, /* get_os */
frontend_gx_get_rating, frontend_gx_get_rating,

View File

@ -326,7 +326,7 @@ static void frontend_ps3_deinit(void *data)
} }
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
static void frontend_ps3_set_fork(bool exit, bool start_game) static void frontend_ps3_set_fork(bool exit, bool start_game, bool restart)
{ {
exit_spawn = exitspawn; exit_spawn = exitspawn;
exitspawn_start_game = start_game; exitspawn_start_game = start_game;

View File

@ -273,7 +273,7 @@ static void frontend_psp_exec(const char *path, bool should_load_game)
#endif #endif
} }
static void frontend_psp_set_fork(bool exit, bool start_game) static void frontend_psp_set_fork(bool exit, bool start_game, bool restart)
{ {
exit_spawn = true; exit_spawn = true;
exitspawn_start_game = start_game; exitspawn_start_game = start_game;

View File

@ -1292,7 +1292,7 @@ static void frontend_xdk_exec(const char *path, bool should_load_game)
#endif #endif
} }
static void frontend_xdk_set_fork(bool exit, bool start_game) static void frontend_xdk_set_fork(bool exit, bool start_game, bool restart)
{ {
exit_spawn = exit; exit_spawn = exit;
exitspawn_start_game = start_game; exitspawn_start_game = start_game;

View File

@ -131,13 +131,13 @@ void frontend_driver_content_loaded(void)
frontend->content_loaded(); frontend->content_loaded();
} }
void frontend_driver_set_fork(bool a, bool b) void frontend_driver_set_fork(bool a, bool b, bool restart)
{ {
frontend_ctx_driver_t *frontend = frontend_get_ptr(); frontend_ctx_driver_t *frontend = frontend_get_ptr();
if (!frontend || !frontend->set_fork) if (!frontend || !frontend->set_fork)
return; return;
frontend->set_fork(a, b); frontend->set_fork(a, b, restart);
} }
void frontend_driver_process_args(int *argc, char *argv[]) void frontend_driver_process_args(int *argc, char *argv[])

View File

@ -64,7 +64,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);
void (*set_fork)(bool exitspawn, bool start_game); void (*set_fork)(bool exitspawn, bool start_game, bool restart);
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 +116,7 @@ int frontend_driver_parse_drive_list(void *data);
void frontend_driver_content_loaded(void); void frontend_driver_content_loaded(void);
void frontend_driver_set_fork(bool a, bool b); void frontend_driver_set_fork(bool a, bool b, bool restart);
void frontend_driver_process_args(int *argc, char *argv[]); void frontend_driver_process_args(int *argc, char *argv[]);