From 576f1a702ac603dc46b3ec5471b15cd62ba7cb08 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Wed, 19 Jan 2022 14:50:48 -0800 Subject: [PATCH] Core Audio output: Hopefully really fix deadlock issue --- Audio/Output/OutputCoreAudio.m | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Audio/Output/OutputCoreAudio.m b/Audio/Output/OutputCoreAudio.m index 52a1d97dd..65052fb14 100644 --- a/Audio/Output/OutputCoreAudio.m +++ b/Audio/Output/OutputCoreAudio.m @@ -222,10 +222,20 @@ default_device_changed(AudioObjectID inObjectID, UInt32 inNumberAddresses, const if ([outputController shouldReset]) { size_t length = [[outputController buffer] bufferedLength]; - atomic_fetch_add(&bytesRendered, length); - [outputController incrementAmountPlayed:length]; [[outputController buffer] empty]; [outputController setShouldReset:NO]; + NSArray * delayedCopy = [delayedEvents copy]; + [delayedEvents removeAllObjects]; + for (NSNumber * eventOffset in delayedCopy) { + long eventTimestamp = [eventOffset longValue]; + if (eventTimestamp >= length) { + eventTimestamp -= length; + } + else { + eventTimestamp = 0; + } + [delayedEvents addObject:[NSNumber numberWithLong:eventTimestamp]]; + } } while ([delayedEvents count]) {