1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-29 12:50:28 +00:00

Remove unnecessary lock.

This commit is contained in:
Thomas Harte 2022-07-12 16:22:19 -04:00
parent 0270997acd
commit 1c537a877e

View File

@ -14,7 +14,7 @@
@implementation CSAudioQueue { @implementation CSAudioQueue {
AudioQueueRef _audioQueue; AudioQueueRef _audioQueue;
NSLock *_storedBuffersLock, *_deallocLock; NSLock *_deallocLock;
atomic_int _enqueuedBuffers; atomic_int _enqueuedBuffers;
} }
@ -24,7 +24,6 @@
@returns @c YES if the queue is running dry; @c NO otherwise. @returns @c YES if the queue is running dry; @c NO otherwise.
*/ */
- (BOOL)audioQueue:(AudioQueueRef)theAudioQueue didCallbackWithBuffer:(AudioQueueBufferRef)buffer { - (BOOL)audioQueue:(AudioQueueRef)theAudioQueue didCallbackWithBuffer:(AudioQueueBufferRef)buffer {
[_storedBuffersLock lock];
const int buffers = atomic_fetch_add(&_enqueuedBuffers, -1); const int buffers = atomic_fetch_add(&_enqueuedBuffers, -1);
// If that suggests the queue may be exhausted soon, re-enqueue whatever just came back in order to // If that suggests the queue may be exhausted soon, re-enqueue whatever just came back in order to
@ -37,7 +36,6 @@
AudioQueueFreeBuffer(_audioQueue, buffer); AudioQueueFreeBuffer(_audioQueue, buffer);
} }
[_storedBuffersLock unlock];
return YES; return YES;
} }
@ -51,7 +49,6 @@
self = [super init]; self = [super init];
if(self) { if(self) {
_storedBuffersLock = [[NSLock alloc] init];
_deallocLock = [[NSLock alloc] init]; _deallocLock = [[NSLock alloc] init];
_samplingRate = samplingRate; _samplingRate = samplingRate;
@ -127,10 +124,8 @@
- (void)enqueueAudioBuffer:(const int16_t *)buffer numberOfSamples:(size_t)lengthInSamples { - (void)enqueueAudioBuffer:(const int16_t *)buffer numberOfSamples:(size_t)lengthInSamples {
size_t bufferBytes = lengthInSamples * sizeof(int16_t); size_t bufferBytes = lengthInSamples * sizeof(int16_t);
[_storedBuffersLock lock];
// Don't enqueue more than 4 buffers ahead of now, to ensure not too much latency accrues. // Don't enqueue more than 4 buffers ahead of now, to ensure not too much latency accrues.
if(atomic_load_explicit(&_enqueuedBuffers, memory_order_relaxed) > 4) { if(atomic_load_explicit(&_enqueuedBuffers, memory_order_relaxed) > 4) {
[_storedBuffersLock unlock];
return; return;
} }
const int enqueuedBuffers = atomic_fetch_add(&_enqueuedBuffers, 1); const int enqueuedBuffers = atomic_fetch_add(&_enqueuedBuffers, 1);
@ -141,7 +136,6 @@
newBuffer->mAudioDataByteSize = (UInt32)bufferBytes; newBuffer->mAudioDataByteSize = (UInt32)bufferBytes;
AudioQueueEnqueueBuffer(_audioQueue, newBuffer, 0, NULL); AudioQueueEnqueueBuffer(_audioQueue, newBuffer, 0, NULL);
[_storedBuffersLock unlock];
// 'Start' the queue. This is documented to be a no-op if the queue is already started, // 'Start' the queue. This is documented to be a no-op if the queue is already started,
// and it's better to defer starting it until at least some data is available. // and it's better to defer starting it until at least some data is available.