From 6844d92c230763f3ef4b7f7a3949c7976e90e5fb Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 24 May 2017 13:28:13 -0400 Subject: [PATCH] coreaudio: we don't need to track number of allocated audio buffers anymore. CoreAudio takes care of iterating through the buffers and freeing them now, so we don't have to manage this ourselves. --- src/audio/coreaudio/SDL_coreaudio.h | 1 - src/audio/coreaudio/SDL_coreaudio.m | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/audio/coreaudio/SDL_coreaudio.h b/src/audio/coreaudio/SDL_coreaudio.h index 85f19d459..72d8893fa 100644 --- a/src/audio/coreaudio/SDL_coreaudio.h +++ b/src/audio/coreaudio/SDL_coreaudio.h @@ -47,7 +47,6 @@ struct SDL_PrivateAudioData { SDL_Thread *thread; AudioQueueRef audioQueue; - int numAudioBuffers; AudioQueueBufferRef *audioBuffer; void *buffer; UInt32 bufferOffset; diff --git a/src/audio/coreaudio/SDL_coreaudio.m b/src/audio/coreaudio/SDL_coreaudio.m index efcaffa16..2b02ed7a5 100644 --- a/src/audio/coreaudio/SDL_coreaudio.m +++ b/src/audio/coreaudio/SDL_coreaudio.m @@ -667,23 +667,22 @@ prepare_audioqueue(_THIS) /* Make sure we can feed the device at least 50 milliseconds at a time. */ const double msecs = (this->spec.samples / ((double) this->spec.freq)) * 1000.0; - if (msecs >= 10.0) { - this->hidden->numAudioBuffers = 2; - } else { - this->hidden->numAudioBuffers = (int) (SDL_ceil(10.0 / msecs) * 2); + int numAudioBuffers = 2; + if (msecs < 10.0) { /* use more buffers if we have a VERY small sample set. */ + numAudioBuffers = (int) (SDL_ceil(10.0 / msecs) * 2); } - this->hidden->audioBuffer = SDL_calloc(1, sizeof (AudioQueueBufferRef) * this->hidden->numAudioBuffers); + this->hidden->audioBuffer = SDL_calloc(1, sizeof (AudioQueueBufferRef) * numAudioBuffers); if (this->hidden->audioBuffer == NULL) { SDL_OutOfMemory(); return 0; } #if DEBUG_COREAUDIO - printf("COREAUDIO: numAudioBuffers == %d\n", this->hidden->numAudioBuffers); + printf("COREAUDIO: numAudioBuffers == %d\n", numAudioBuffers); #endif - for (i = 0; i < this->hidden->numAudioBuffers; i++) { + for (i = 0; i < numAudioBuffers; i++) { result = AudioQueueAllocateBuffer(this->hidden->audioQueue, this->spec.size, &this->hidden->audioBuffer[i]); CHECK_RESULT("AudioQueueAllocateBuffer"); SDL_memset(this->hidden->audioBuffer[i]->mAudioData, this->spec.silence, this->hidden->audioBuffer[i]->mAudioDataBytesCapacity);