From b1b3831739cf7db51e108323c9869a921bc0cd0f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Dec 2015 09:06:47 +0100 Subject: [PATCH] Move error_on_init to rarch_ctl and make it a static local variable --- retroarch.c | 16 ++++++++++++---- retroarch.h | 8 +++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/retroarch.c b/retroarch.c index a75462c2ae..514500b8d4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -93,7 +93,6 @@ enum static char current_savestate_dir[PATH_MAX_LENGTH]; static char current_savefile_dir[PATH_MAX_LENGTH]; -static bool error_on_init; static char error_string[PATH_MAX_LENGTH]; static jmp_buf error_sjlj_context; @@ -1160,7 +1159,7 @@ int rarch_main_init(int argc, char *argv[]) return sjlj_ret; } - error_on_init = true; + rarch_ctl(RARCH_CTL_SET_ERROR_ON_INIT, NULL); retro_main_log_file_init(NULL); parse_input(argc, argv); @@ -1241,7 +1240,7 @@ int rarch_main_init(int argc, char *argv[]) event_command(EVENT_CMD_SAVEFILES_INIT); event_command(EVENT_CMD_SET_PER_GAME_RESOLUTION); - error_on_init = false; + rarch_ctl(RARCH_CTL_UNSET_ERROR_ON_INIT, NULL); global->inited.main = true; return 0; @@ -1329,6 +1328,7 @@ void rarch_main_init_wrap(const struct rarch_main_wrap *args, bool rarch_ctl(enum rarch_ctl_state state, void *data) { + static bool rarch_error_on_init = false;; static bool rarch_block_config_read = false; static bool rarch_force_fullscreen = false; driver_t *driver = driver_get_ptr(); @@ -1338,6 +1338,14 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) switch(state) { + case RARCH_CTL_SET_ERROR_ON_INIT: + rarch_error_on_init = true; + break; + case RARCH_CTL_UNSET_ERROR_ON_INIT: + rarch_error_on_init = false; + break; + case RARCH_CTL_IS_ERROR_ON_INIT: + return rarch_error_on_init; case RARCH_CTL_SET_FORCE_FULLSCREEN: rarch_force_fullscreen = true; break; @@ -1742,7 +1750,7 @@ void retro_fail(int error_code, const char *error) /* We cannot longjmp unless we're in rarch_main_init(). * If not, something went very wrong, and we should * just exit right away. */ - retro_assert(error_on_init); + retro_assert(rarch_ctl(RARCH_CTL_IS_ERROR_ON_INIT, NULL)); strlcpy(error_string, error, sizeof(error_string)); longjmp(error_sjlj_context, error_code); diff --git a/retroarch.h b/retroarch.h index eae21fab57..a3f3ef5e12 100644 --- a/retroarch.h +++ b/retroarch.h @@ -105,7 +105,13 @@ enum rarch_ctl_state RARCH_CTL_UNSET_BLOCK_CONFIG_READ, - RARCH_CTL_IS_BLOCK_CONFIG_READ + RARCH_CTL_IS_BLOCK_CONFIG_READ, + + RARCH_CTL_SET_ERROR_ON_INIT, + + RARCH_CTL_UNSET_ERROR_ON_INIT, + + RARCH_CTL_IS_ERROR_ON_INIT }; enum rarch_content_type