diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 80cd8a8314..7984dc4859 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -260,7 +260,6 @@ const char *config_get_audio_driver_options(void) return char_list_new_special(STRING_LIST_AUDIO_DRIVERS, NULL); } - static bool uninit_audio(void) { settings_t *settings = config_get_ptr(); @@ -305,7 +304,7 @@ static bool uninit_audio(void) return true; } -static bool init_audio(bool audio_cb_inited) +static bool audio_driver_init_internal(bool audio_cb_inited) { size_t outsamples_max, max_bufsamples = AUDIO_CHUNK_SIZE_NONBLOCKING * 2; settings_t *settings = config_get_ptr(); @@ -356,7 +355,7 @@ static bool init_audio(bool audio_cb_inited) current_audio)) { RARCH_ERR("Cannot open threaded audio driver ... Exiting ...\n"); - retro_fail(1, "init_audio()"); + retro_fail(1, "audio_driver_init_internal()"); } } else @@ -812,20 +811,26 @@ bool audio_driver_new_devices_list(void) return true; } +bool audio_driver_init(void) +{ + return audio_driver_init_internal(audio_callback.callback != NULL); +} + +bool audio_driver_get_devices_list(void **data) +{ + struct string_list**ptr = (struct string_list**)data; + if (!ptr) + return false; + *ptr = audio_driver_devices_list; + return true; +} + bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); switch (state) { - case RARCH_AUDIO_CTL_DEVICES_LIST_GET: - { - struct string_list**ptr = (struct string_list**)data; - if (!ptr) - return false; - *ptr = audio_driver_devices_list; - } - break; case RARCH_AUDIO_CTL_RESAMPLER_INIT: return rarch_resampler_realloc( &audio_driver_resampler_data, @@ -840,8 +845,6 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data) (struct resampler_data*)data); retro_perf_stop(&resampler_proc); break; - case RARCH_AUDIO_CTL_INIT: - return init_audio(audio_callback.callback != NULL); case RARCH_AUDIO_CTL_DESTROY: audio_driver_active = false; audio_driver_data_own = false; diff --git a/audio/audio_driver.h b/audio/audio_driver.h index 90fc35c4b7..91a42b72ab 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -20,7 +20,9 @@ #include #include #include + #include + #include "audio_dsp_filter.h" #ifdef __cplusplus @@ -37,7 +39,6 @@ extern "C" { enum rarch_audio_ctl_state { RARCH_AUDIO_CTL_NONE = 0, - RARCH_AUDIO_CTL_INIT, RARCH_AUDIO_CTL_DEINIT, RARCH_AUDIO_CTL_DESTROY, RARCH_AUDIO_CTL_DESTROY_DATA, @@ -64,8 +65,7 @@ enum rarch_audio_ctl_state RARCH_AUDIO_CTL_UNSET_ACTIVE, RARCH_AUDIO_CTL_IS_ACTIVE, RARCH_AUDIO_CTL_RESAMPLER_INIT, - RARCH_AUDIO_CTL_RESAMPLER_PROCESS, - RARCH_AUDIO_CTL_DEVICES_LIST_GET + RARCH_AUDIO_CTL_RESAMPLER_PROCESS }; typedef struct audio_driver @@ -173,6 +173,10 @@ void audio_driver_dsp_filter_init(const char *device); void audio_driver_set_buffer_size(size_t bufsize); +bool audio_driver_get_devices_list(void **ptr); + +bool audio_driver_init(void); + extern audio_driver_t audio_rsound; extern audio_driver_t audio_oss; extern audio_driver_t audio_alsa; diff --git a/driver.c b/driver.c index cd9c5ff426..4b7133b3d0 100644 --- a/driver.c +++ b/driver.c @@ -338,7 +338,7 @@ static void init_drivers(int flags) if (flags & DRIVER_AUDIO) { - audio_driver_ctl(RARCH_AUDIO_CTL_INIT, NULL); + audio_driver_init(); audio_driver_new_devices_list(); } diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 87d8502097..4d21434843 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -759,7 +759,8 @@ static int setting_string_action_left_audio_device(void *data, bool wraparound) int audio_device_index; struct string_list *ptr = NULL; rarch_setting_t *setting = (rarch_setting_t*)data; - if (!audio_driver_ctl(RARCH_AUDIO_CTL_DEVICES_LIST_GET, &ptr)) + + if (!audio_driver_get_devices_list((void**)&ptr)) return -1; if (!ptr) @@ -783,7 +784,8 @@ static int setting_string_action_right_audio_device(void *data, bool wraparound) int audio_device_index; struct string_list *ptr = NULL; rarch_setting_t *setting = (rarch_setting_t*)data; - if (!audio_driver_ctl(RARCH_AUDIO_CTL_DEVICES_LIST_GET, &ptr)) + + if (!audio_driver_get_devices_list((void**)&ptr)) return -1; if (!ptr)