diff --git a/audio/audio_driver.c b/audio/audio_driver.c index e45226d8a2..cc0485a940 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -49,10 +49,6 @@ #include "../file_path_special.h" #include "../content.h" -#ifdef HAVE_THREADS -#include -#endif - #define AUDIO_BUFFER_FREE_SAMPLES_COUNT (8 * 1024) #define MENU_SOUND_FORMATS "ogg|mod|xm|s3m|mp3|flac" @@ -202,10 +198,6 @@ static void *audio_driver_context_audio_data = NULL; static bool audio_suspended = false; static bool audio_is_threaded = false; -#ifdef HAVE_THREADS -static slock_t* s_audio_driver_lock = NULL; -#endif - static void audio_mixer_play_stop_sequential_cb( audio_mixer_sound_t *sound, unsigned reason); static void audio_mixer_play_stop_cb( @@ -213,22 +205,6 @@ static void audio_mixer_play_stop_cb( static void audio_mixer_menu_stop_cb( audio_mixer_sound_t *sound, unsigned reason); -#ifdef HAVE_THREADS -#define audio_driver_lock() \ - if (s_audio_driver_lock) \ - slock_lock(s_audio_driver_lock) -#else -#define audio_driver_lock() -#endif - -#ifdef HAVE_THREADS -#define audio_driver_unlock() \ - if (s_audio_driver_lock) \ - slock_unlock(s_audio_driver_lock) -#else -#define audio_driver_unlock() -#endif - static enum resampler_quality audio_driver_get_resampler_quality(void) { settings_t *settings = config_get_ptr(); @@ -547,15 +523,6 @@ static bool audio_driver_init_internal(bool audio_cb_inited) audio_source_ratio_original = audio_source_ratio_current = (double)settings->uints.audio_out_rate / audio_driver_input; -#ifdef HAVE_THREADS - if (s_audio_driver_lock) - slock_free(s_audio_driver_lock); - s_audio_driver_lock = slock_new(); -#endif - - audio_resampler_lock_init(); - audio_resampler_lock(); - if (!retro_resampler_realloc( &audio_driver_resampler_data, &audio_driver_resampler, @@ -568,8 +535,6 @@ static bool audio_driver_init_internal(bool audio_cb_inited) audio_driver_active = false; } - audio_resampler_unlock(); - aud_inp_data = (float*)malloc(max_bufsamples * sizeof(float)); retro_assert(aud_inp_data != NULL); @@ -640,13 +605,9 @@ void audio_driver_set_nonblocking_state(bool enable) audio_driver_context_audio_data, settings->bools.audio_sync ? enable : true); - audio_driver_lock(); - audio_driver_chunk_size = enable ? audio_driver_chunk_nonblock_size : audio_driver_chunk_block_size; - - audio_driver_unlock(); } /** @@ -689,13 +650,9 @@ static void audio_driver_flush(const int16_t *data, size_t samples) !audio_driver_output_samples_buf) return; - audio_driver_lock(); - convert_s16_to_float(audio_driver_input_data, data, samples, audio_volume_gain); - audio_driver_unlock(); - src_data.data_in = audio_driver_input_data; src_data.input_frames = samples >> 1; @@ -759,11 +716,7 @@ static void audio_driver_flush(const int16_t *data, size_t samples) src_data.ratio *= settings->floats.slowmotion_ratio; } - audio_driver_lock(); - - audio_resampler_lock(); audio_driver_resampler->process(audio_driver_resampler_data, &src_data); - audio_resampler_unlock(); is_active = audio_mixer_active; @@ -777,8 +730,6 @@ static void audio_driver_flush(const int16_t *data, size_t samples) src_data.output_frames, mixer_gain, override); } - audio_driver_unlock(); - output_data = audio_driver_output_samples_buf; output_frames = (unsigned)src_data.output_frames; @@ -793,13 +744,9 @@ static void audio_driver_flush(const int16_t *data, size_t samples) output_frames *= sizeof(int16_t); } - audio_driver_lock(); - if (current_audio->write(audio_driver_context_audio_data, output_data, output_frames * 2) < 0) audio_driver_active = false; - - audio_driver_unlock(); } /** @@ -811,24 +758,14 @@ static void audio_driver_flush(const int16_t *data, size_t samples) **/ void audio_driver_sample(int16_t left, int16_t right) { - audio_driver_lock(); - if (audio_suspended) - { - audio_driver_unlock(); return; - } audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = left; audio_driver_output_samples_conv_buf[audio_driver_data_ptr++] = right; if (audio_driver_data_ptr < audio_driver_chunk_size) - { - audio_driver_unlock(); return; - } - - audio_driver_unlock(); audio_driver_flush(audio_driver_output_samples_conv_buf, audio_driver_data_ptr); @@ -1051,13 +988,10 @@ bool audio_driver_find_driver(void) void audio_driver_deinit_resampler(void) { - audio_resampler_lock(); if (audio_driver_resampler && audio_driver_resampler_data) audio_driver_resampler->free(audio_driver_resampler_data); audio_driver_resampler = NULL; audio_driver_resampler_data = NULL; - audio_resampler_unlock(); - audio_resampler_lock_free(); } bool audio_driver_free_devices_list(void) @@ -1353,8 +1287,6 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params) break; } - audio_driver_lock(); - audio_mixer_active = true; audio_mixer_streams[free_slot].name = !string_is_empty(params->basename) ? strdup(params->basename) : NULL; @@ -1367,8 +1299,6 @@ bool audio_driver_mixer_add_stream(audio_mixer_stream_params_t *params) audio_mixer_streams[free_slot].volume = params->volume; audio_mixer_streams[free_slot].stop_cb = stop_cb; - audio_driver_unlock(); - return true; } @@ -1653,10 +1583,6 @@ bool audio_driver_deinit(void) { audio_driver_mixer_deinit(); audio_driver_free_devices_list(); -#ifdef HAVE_THREADS - slock_free(s_audio_driver_lock); - s_audio_driver_lock = NULL; -#endif if (!audio_driver_deinit_internal()) return false; diff --git a/libretro-common/audio/audio_mixer.c b/libretro-common/audio/audio_mixer.c index aa9a91010d..f717761796 100644 --- a/libretro-common/audio/audio_mixer.c +++ b/libretro-common/audio/audio_mixer.c @@ -26,10 +26,6 @@ #include #include -#ifdef HAVE_THREADS -#include -#endif - #include #include #include @@ -191,10 +187,6 @@ struct audio_mixer_voice static struct audio_mixer_voice s_voices[AUDIO_MIXER_MAX_VOICES] = {{0}}; static unsigned s_rate = 0; -#ifdef HAVE_THREADS -static slock_t* s_locker = NULL; -#endif - static bool wav2float(const rwav_t* wav, float** pcm, size_t samples_out) { size_t i; @@ -316,24 +308,12 @@ void audio_mixer_init(unsigned rate) for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++) s_voices[i].type = AUDIO_MIXER_TYPE_NONE; - -#ifdef HAVE_THREADS - if (s_locker) - slock_free(s_locker); - s_locker = slock_new(); -#endif } void audio_mixer_done(void) { unsigned i; -#ifdef HAVE_THREADS - /* Dont call audio mixer functions after this point */ - slock_free(s_locker); - s_locker = NULL; -#endif - for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++) s_voices[i].type = AUDIO_MIXER_TYPE_NONE; } @@ -801,12 +781,6 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat, if (!sound) return NULL; -#ifdef HAVE_THREADS - slock_lock(s_locker); -#endif - - audio_resampler_lock(); - for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) { if (voice->type != AUDIO_MIXER_TYPE_NONE) @@ -855,12 +829,6 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat, else voice = NULL; - audio_resampler_unlock(); - -#ifdef HAVE_THREADS - slock_unlock(s_locker); -#endif - return voice; } @@ -871,19 +839,11 @@ void audio_mixer_stop(audio_mixer_voice_t* voice) if (voice) { -#ifdef HAVE_THREADS - slock_lock(s_locker); -#endif - stop_cb = voice->stop_cb; sound = voice->sound; voice->type = AUDIO_MIXER_TYPE_NONE; -#ifdef HAVE_THREADS - slock_unlock(s_locker); -#endif - if (stop_cb) stop_cb(sound, AUDIO_MIXER_SOUND_STOPPED); } @@ -1239,12 +1199,6 @@ void audio_mixer_mix(float* buffer, size_t num_frames, float volume_override, bo float* sample = NULL; audio_mixer_voice_t* voice = s_voices; -#ifdef HAVE_THREADS - slock_lock(s_locker); -#endif - - audio_resampler_lock(); - for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) { float volume = (override) ? volume_override : voice->volume; @@ -1286,12 +1240,6 @@ void audio_mixer_mix(float* buffer, size_t num_frames, float volume_override, bo else if (*sample > 1.0f) *sample = 1.0f; } - - audio_resampler_unlock(); - -#ifdef HAVE_THREADS - slock_unlock(s_locker); -#endif } float audio_mixer_voice_get_volume(audio_mixer_voice_t *voice) diff --git a/libretro-common/audio/resampler/audio_resampler.c b/libretro-common/audio/resampler/audio_resampler.c index 306d325a8a..8d27f06932 100644 --- a/libretro-common/audio/resampler/audio_resampler.c +++ b/libretro-common/audio/resampler/audio_resampler.c @@ -28,14 +28,6 @@ #include