diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 54ba10e362..d18fdf5c30 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -874,7 +874,7 @@ bool audio_driver_set_callback(const void *data) bool audio_driver_enable_callback(void) { - if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) + if (!audio_driver_has_callback()) return false; if (audio_callback.set_state) audio_callback.set_state(true); @@ -883,7 +883,7 @@ bool audio_driver_enable_callback(void) bool audio_driver_disable_callback(void) { - if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) + if (!audio_driver_has_callback()) return false; if (audio_callback.set_state) @@ -902,6 +902,22 @@ void audio_driver_monitor_set_rate(void) audio_driver_data.audio_rate.source_ratio.current = new_src_ratio; } +bool audio_driver_callback(void) +{ + if (!audio_driver_has_callback()) + return false; + + if (audio_callback.callback) + audio_callback.callback(); + + return true; +} + +bool audio_driver_has_callback(void) +{ + return audio_callback.callback; +} + bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); @@ -916,15 +932,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) case RARCH_AUDIO_CTL_DESTROY_DATA: audio_driver_context_audio_data = NULL; break; - case RARCH_AUDIO_CTL_HAS_CALLBACK: - return audio_callback.callback; - case RARCH_AUDIO_CTL_CALLBACK: - if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) - return false; - - if (audio_callback.callback) - audio_callback.callback(); - break; case RARCH_AUDIO_CTL_UNSET_CALLBACK: audio_callback.callback = NULL; audio_callback.set_state = NULL; diff --git a/audio/audio_driver.h b/audio/audio_driver.h index 1e9989f8e6..dc2b6ca5cc 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -48,8 +48,6 @@ enum rarch_audio_ctl_state RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, RARCH_AUDIO_CTL_MUTE_TOGGLE, RARCH_AUDIO_CTL_UNSET_CALLBACK, - RARCH_AUDIO_CTL_CALLBACK, - RARCH_AUDIO_CTL_HAS_CALLBACK, RARCH_AUDIO_CTL_ALIVE, RARCH_AUDIO_CTL_FRAME_IS_REVERSE, RARCH_AUDIO_CTL_SET_OWN_DRIVER, @@ -179,6 +177,10 @@ void audio_driver_setup_rewind(void); bool audio_driver_set_callback(const void *data); +bool audio_driver_callback(void); + +bool audio_driver_has_callback(void); + /* Sets audio monitor rate to new value. */ void audio_driver_monitor_set_rate(void); diff --git a/audio/audio_thread_wrapper.c b/audio/audio_thread_wrapper.c index f2d5f297ef..522fbdff85 100644 --- a/audio/audio_thread_wrapper.c +++ b/audio/audio_thread_wrapper.c @@ -102,7 +102,7 @@ static void audio_thread_loop(void *data) } slock_unlock(thr->lock); - audio_driver_ctl(RARCH_AUDIO_CTL_CALLBACK, NULL); + audio_driver_callback(); } RARCH_LOG("[Audio Thread]: Tearing down driver.\n"); diff --git a/rewind.c b/rewind.c index 9ee215ba67..f049c228ea 100644 --- a/rewind.c +++ b/rewind.c @@ -631,7 +631,7 @@ void init_rewind(void) if (!settings->rewind_enable || rewind_state.state) return; - if (audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) + if (audio_driver_has_callback()) { RARCH_ERR("%s.\n", msg_hash_to_str(MSG_REWIND_INIT_FAILED)); return;