From 13998f583acda7eb4cc5472e480ca8b8f68cd6c9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 8 May 2016 16:50:23 +0200 Subject: [PATCH] (audio driver) Refactors --- audio/audio_driver.c | 40 ++++++++++++++++++++---------------- audio/audio_driver.h | 9 +++++--- audio/audio_thread_wrapper.c | 4 ++-- driver.c | 2 +- 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 9960dc4079..ebdc6465b7 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -342,7 +342,7 @@ static bool audio_driver_init_internal(bool audio_cb_inited) return false; } - audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL); + audio_driver_find_driver(); #ifdef HAVE_THREADS if (audio_cb_inited) { @@ -748,7 +748,7 @@ void audio_driver_setup_rewind(void) audio_driver_data.data_ptr = 0; } -static bool find_audio_driver(void) +bool audio_driver_find_driver(void) { int i; driver_ctx_info_t drv; @@ -776,7 +776,7 @@ static bool find_audio_driver(void) current_audio = (const audio_driver_t*)audio_driver_find_handle(0); if (!current_audio) - retro_fail(1, "find_audio_driver()"); + retro_fail(1, "audio_driver_find()"); } return true; @@ -872,6 +872,25 @@ bool audio_driver_set_callback(const void *data) return true; } +bool audio_driver_enable_callback(void) +{ + if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) + return false; + if (audio_callback.set_state) + audio_callback.set_state(true); + return true; +} + +bool audio_driver_disable_callback(void) +{ + if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) + return false; + + if (audio_callback.set_state) + audio_callback.set_state(false); + return true; +} + bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); @@ -886,19 +905,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_SET_CALLBACK_ENABLE: - if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) - return false; - if (audio_callback.set_state) - audio_callback.set_state(true); - break; - case RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE: - if (!audio_driver_ctl(RARCH_AUDIO_CTL_HAS_CALLBACK, NULL)) - return false; - - if (audio_callback.set_state) - audio_callback.set_state(false); - break; case RARCH_AUDIO_CTL_HAS_CALLBACK: return audio_callback.callback; case RARCH_AUDIO_CTL_CALLBACK: @@ -955,8 +961,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) || !audio_driver_context_audio_data) return false; return current_audio->stop(audio_driver_context_audio_data); - case RARCH_AUDIO_CTL_FIND_DRIVER: - return find_audio_driver(); case RARCH_AUDIO_CTL_SET_OWN_DRIVER: audio_driver_data_own = true; break; diff --git a/audio/audio_driver.h b/audio/audio_driver.h index ad8dd4db6a..c2b6c33a94 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -45,13 +45,10 @@ enum rarch_audio_ctl_state RARCH_AUDIO_CTL_DESTROY_DATA, RARCH_AUDIO_CTL_START, RARCH_AUDIO_CTL_STOP, - RARCH_AUDIO_CTL_FIND_DRIVER, /* Sets audio monitor refresh rate to new value. */ RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE, RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, RARCH_AUDIO_CTL_MUTE_TOGGLE, - RARCH_AUDIO_CTL_SET_CALLBACK_ENABLE, - RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE, RARCH_AUDIO_CTL_UNSET_CALLBACK, RARCH_AUDIO_CTL_CALLBACK, RARCH_AUDIO_CTL_HAS_CALLBACK, @@ -129,6 +126,10 @@ bool audio_driver_free_devices_list(void); bool audio_driver_new_devices_list(void); +bool audio_driver_enable_callback(void); + +bool audio_driver_disable_callback(void); + /** * audio_driver_find_handle: * @index : index of driver to get handle to. @@ -180,6 +181,8 @@ void audio_driver_setup_rewind(void); bool audio_driver_set_callback(const void *data); +bool audio_driver_find_driver(void); + bool audio_driver_deinit(void); bool audio_driver_init(void); diff --git a/audio/audio_thread_wrapper.c b/audio/audio_thread_wrapper.c index 1ff8dd3c83..f2d5f297ef 100644 --- a/audio/audio_thread_wrapper.c +++ b/audio/audio_thread_wrapper.c @@ -190,7 +190,7 @@ static bool audio_thread_stop(void *data) audio_thread_block(thr); thr->is_paused = true; - audio_driver_ctl(RARCH_AUDIO_CTL_SET_CALLBACK_DISABLE, NULL); + audio_driver_disable_callback(); return true; } @@ -202,7 +202,7 @@ static bool audio_thread_start(void *data) if (!thr) return false; - audio_driver_ctl(RARCH_AUDIO_CTL_SET_CALLBACK_ENABLE, NULL); + audio_driver_enable_callback(); thr->is_paused = false; audio_thread_unblock(thr); diff --git a/driver.c b/driver.c index 4b7133b3d0..fc0c9ac4ea 100644 --- a/driver.c +++ b/driver.c @@ -464,7 +464,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data) return driver_ctl(RARCH_DRIVER_CTL_INIT, &flags); } case RARCH_DRIVER_CTL_INIT_PRE: - audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL); + audio_driver_find_driver(); video_driver_find_driver(); input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL); camera_driver_ctl(RARCH_CAMERA_CTL_FIND_DRIVER, NULL);