diff --git a/libretro_version_1.c b/libretro_version_1.c index 006ef196f9..6fadf9852b 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -168,7 +168,7 @@ static bool retro_init_libretro_cbs(void *data) * Sets the audio sampling callbacks based on whether or not * rewinding is currently activated. **/ -void retro_set_rewind_callbacks(void) +static void retro_set_rewind_callbacks(void) { if (state_manager_frame_is_reversed()) { @@ -188,6 +188,9 @@ bool core_ctl(enum core_ctl_state state, void *data) { case CORE_CTL_SET_CBS: return retro_set_default_callbacks(data); + case CORE_CTL_SET_CBS_REWIND: + retro_set_rewind_callbacks(); + break; case CORE_CTL_INIT: return retro_init_libretro_cbs(data); case CORE_CTL_DEINIT: diff --git a/libretro_version_1.h b/libretro_version_1.h index 7be08307fb..368c4e22b1 100644 --- a/libretro_version_1.h +++ b/libretro_version_1.h @@ -45,7 +45,9 @@ enum core_ctl_state CORE_CTL_DEINIT, - CORE_CTL_SET_CBS + CORE_CTL_SET_CBS, + + CORE_CTL_SET_CBS_REWIND }; typedef struct retro_callbacks @@ -59,14 +61,6 @@ typedef struct retro_callbacks extern retro_callbacks_t retro_ctx; -/** - * retro_set_rewind_callbacks: - * - * Sets the audio sampling callbacks based on whether or not - * rewinding is currently activated. - **/ -void retro_set_rewind_callbacks(void); - /* Runs the core for one frame. Use instead of core.retro_run(). */ void retro_run_core(void); diff --git a/rewind.c b/rewind.c index 78378af319..4adfc60876 100644 --- a/rewind.c +++ b/rewind.c @@ -743,5 +743,5 @@ void state_manager_check_rewind(bool pressed) } } - retro_set_rewind_callbacks(); + core_ctl(CORE_CTL_SET_CBS_REWIND, NULL); }