From cc862b2cfe63fb37bd627ad596acbbd591b9414f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Feb 2013 20:56:34 -0800 Subject: [PATCH] Fixed bug 1679 - Error in buffer size setting in Haiku/BeOS audio driver PulkoMandy Just like in SDL, audio buffer sizes for BeOS and Haiku BSoundPlayer are sized in bytes, not frames. SDL was feeding the wrong value, leading to buffers smaller than expected and weird behaviour in some unsuspecting programs (noticed it in HivelyTracker but others are likely affected as well. The fix is fortunately very simple --- src/audio/baudio/SDL_beaudio.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/baudio/SDL_beaudio.cc b/src/audio/baudio/SDL_beaudio.cc index 4c1eec5ea..4c52d99b9 100644 --- a/src/audio/baudio/SDL_beaudio.cc +++ b/src/audio/baudio/SDL_beaudio.cc @@ -151,8 +151,6 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) } } - format.buffer_size = _this->spec.samples; - if (!valid_datatype) { /* shouldn't happen, but just in case... */ BEOSAUDIO_CloseDevice(_this); SDL_SetError("Unsupported audio format"); @@ -162,6 +160,8 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) /* Calculate the final parameters for this audio specification */ SDL_CalculateAudioSpec(&_this->spec); + format.buffer_size = _this->spec.size; + /* Subscribe to the audio stream (creates a new thread) */ sigset_t omask; SDL_MaskSignals(&omask);