Core Audio output: Hopefully really fix deadlock issue

CQTexperiment
Christopher Snowhill 2022-01-19 14:50:48 -08:00
parent 16a58e87a0
commit 576f1a702a
1 changed files with 12 additions and 2 deletions

View File

@ -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]) {