diff --git a/src/common/audio_stream.cpp b/src/common/audio_stream.cpp index 5af2a425d..6f129c33a 100644 --- a/src/common/audio_stream.cpp +++ b/src/common/audio_stream.cpp @@ -35,7 +35,7 @@ bool AudioStream::Reconfigure(u32 input_sample_rate /* = DefaultInputSampleRate if (!OpenDevice()) { - EmptyBuffers(); + LockedEmptyBuffers(); m_buffer_size = 0; m_output_sample_rate = 0; m_channels = 0; @@ -289,6 +289,11 @@ void AudioStream::EmptyBuffers() { std::unique_lock lock(m_buffer_mutex); std::unique_lock resampler_lock(m_resampler_mutex); + LockedEmptyBuffers(); +} + +void AudioStream::LockedEmptyBuffers() +{ m_buffer.Clear(); m_underflow_flag.store(false); m_buffer_filling.store(m_wait_for_buffer_fill); diff --git a/src/common/audio_stream.h b/src/common/audio_stream.h index 137269cd4..275d66aac 100644 --- a/src/common/audio_stream.h +++ b/src/common/audio_stream.h @@ -75,6 +75,7 @@ protected: bool SetBufferSize(u32 buffer_size); bool IsDeviceOpen() const { return (m_output_sample_rate > 0); } + void LockedEmptyBuffers(); u32 GetSamplesAvailable() const; u32 GetSamplesAvailableLocked() const; void ReadFrames(SampleType* samples, u32 num_frames, bool apply_volume);