From dc6f0fd0b3f943c6ce0c9dfb359b01f09b7e0596 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Mon, 3 Aug 2020 16:19:58 +0100 Subject: [PATCH] Prevent runahead from being disabled *permanently* when an error occurs --- retroarch.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/retroarch.c b/retroarch.c index 1e8381055c..8e221df7ff 100644 --- a/retroarch.c +++ b/retroarch.c @@ -15590,6 +15590,10 @@ static bool input_driver_ungrab_mouse(struct rarch_state *p_rarch) return true; } +/* Forward declaration */ +#ifdef HAVE_RUNAHEAD +static void runahead_clear_variables(struct rarch_state *p_rarch); +#endif /** * command_event: @@ -16281,6 +16285,19 @@ bool command_event(enum event_command cmd, void *data) #endif command_event_deinit_core(p_rarch, true); +#ifdef HAVE_RUNAHEAD + /* If 'runahead_available' is false, then + * runahead is enabled by the user but an + * error occurred while the core was running + * (typically a save state issue). In this + * case we have to 'manually' reset the runahead + * runtime variables, otherwise runahead will + * remain disabled until the user restarts + * RetroArch */ + if (!p_rarch->runahead_available) + runahead_clear_variables(p_rarch); +#endif + if (hwr) memset(hwr, 0, sizeof(*hwr));