From fa52df018ef44a30b45ceed31dffc25de3393e84 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Tue, 5 Sep 2017 20:56:19 -0500 Subject: SDL: Fix DoubleBufferSDLMixerManager doubling audio latency If it turns out that everything that had previously been fixed by this manager is broken by this change, everything that had been fixed probably could have been fixed by just increasing the audio buffer size in SdlMixerManager. :\ --- backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp | 7 +++++++ backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h | 2 ++ 2 files changed, 9 insertions(+) (limited to 'backends/mixer') diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp index e5f63dc908..ea0ba024bc 100644 --- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp +++ b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp @@ -62,6 +62,13 @@ void DoubleBufferSDLMixerManager::startAudio() { SdlMixerManager::startAudio(); } +SDL_AudioSpec DoubleBufferSDLMixerManager::getAudioSpec(uint32 rate) { + SDL_AudioSpec desired = SdlMixerManager::getAudioSpec(rate); + // Don't double audio latency when double buffering + desired.samples /= 2; + return desired; +} + void DoubleBufferSDLMixerManager::mixerProducerThread() { byte nextSoundBuffer; diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h index e3019fe11b..e952cd2100 100644 --- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h +++ b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h @@ -44,6 +44,8 @@ protected: uint _soundBufSize; byte *_soundBuffers[2]; + virtual SDL_AudioSpec getAudioSpec(uint32 rate) override; + /** * Handles and swap the sound buffers */ -- cgit v1.2.3