Change signature of set_fork so that we can optionally implement

restarting RetroArch (or not)
This commit is contained in:
twinaphex 2016-02-04 17:08:09 +01:00
parent b8a418d6f5
commit c3c14c162e
9 changed files with 34 additions and 21 deletions

View File

@ -1375,7 +1375,8 @@ 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:
frontend_driver_set_fork(true, false, true); if (!frontend_driver_set_fork(true, false, true))
return false;
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

@ -370,7 +370,7 @@ static void frontend_gx_process_args(int *argc, char *argv[])
} }
#ifdef HW_RVL #ifdef HW_RVL
static void frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart) static bool frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
{ {
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
if (restart) if (restart)
@ -395,6 +395,8 @@ static void frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
rarch_ctl(RARCH_CTL_FORCE_QUIT, NULL); rarch_ctl(RARCH_CTL_FORCE_QUIT, NULL);
#endif #endif
return true;
} }
#endif #endif

View File

@ -2121,11 +2121,16 @@ static int frontend_android_parse_drive_list(void *data)
#endif #endif
#ifndef HAVE_DYNAMIC #ifndef HAVE_DYNAMIC
static void frontend_linux_set_fork(bool exitspawn, static bool frontend_linux_set_fork(bool exitspawn,
bool start_game, bool restart) bool start_game, bool restart)
{ {
exit_spawn = exitspawn; exit_spawn = exitspawn;
exitspawn_start_game = start_game; exitspawn_start_game = start_game;
if (restart) /* not implemented */
return false;
return true;
} }
static void frontend_linux_exec(const char *path, bool should_load_game) static void frontend_linux_exec(const char *path, bool should_load_game)

View File

@ -328,10 +328,12 @@ static void frontend_ps3_deinit(void *data)
} }
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
static void frontend_ps3_set_fork(bool exit, bool start_game, bool restart) static bool 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;
return true;
} }
#endif #endif

View File

@ -269,10 +269,12 @@ 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, bool restart) static bool 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;
return true;
} }
static void frontend_psp_exitspawn(char *s, size_t len) static void frontend_psp_exitspawn(char *s, size_t len)

View File

@ -1292,10 +1292,12 @@ 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, bool restart) static bool 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;
return true;
} }
static void frontend_xdk_exitspawn(char *s, size_t len) static void frontend_xdk_exitspawn(char *s, size_t len)

View File

@ -214,13 +214,13 @@ bool frontend_driver_has_fork(void)
return true; return true;
} }
void frontend_driver_set_fork(bool a, bool b, bool restart) bool 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_driver_has_fork()) if (!frontend_driver_has_fork())
return; return false;
frontend->set_fork(a, b, restart); return 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, bool restart); bool (*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, bool restart); bool 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[]);

View File

@ -758,17 +758,16 @@ static int generic_action_ok(const char *path,
flush_char = NULL; flush_char = NULL;
flush_type = MENU_SETTINGS; flush_type = MENU_SETTINGS;
runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, action_path); runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, action_path);
event_cmd_ctl(EVENT_CMD_LOAD_CORE, NULL); if (event_cmd_ctl(EVENT_CMD_LOAD_CORE, NULL))
{
#if !defined(HAVE_DYNAMIC) #ifndef HAVE_DYNAMIC
/* Core selection on non-console just updates directory listing. /* Core selection on non-console just updates directory listing.
* Will take effect on new content load. */ * Will take effect on new content load. */
ret = -1; if (event_cmd_ctl(EVENT_CMD_RESTART_RETROARCH, NULL))
event_cmd_ctl(EVENT_CMD_RESTART_RETROARCH, NULL); ret = -1;
#endif #endif
}
break; break;
case ACTION_OK_LOAD_CONFIG_FILE: case ACTION_OK_LOAD_CONFIG_FILE:
{ {
bool msg_force = true; bool msg_force = true;