Core Audio output: Hopefully really fix deadlock issue
This commit is contained in:
parent
16a58e87a0
commit
576f1a702a
1 changed files with 12 additions and 2 deletions
|
@ -222,10 +222,20 @@ default_device_changed(AudioObjectID inObjectID, UInt32 inNumberAddresses, const
|
||||||
|
|
||||||
if ([outputController shouldReset]) {
|
if ([outputController shouldReset]) {
|
||||||
size_t length = [[outputController buffer] bufferedLength];
|
size_t length = [[outputController buffer] bufferedLength];
|
||||||
atomic_fetch_add(&bytesRendered, length);
|
|
||||||
[outputController incrementAmountPlayed:length];
|
|
||||||
[[outputController buffer] empty];
|
[[outputController buffer] empty];
|
||||||
[outputController setShouldReset:NO];
|
[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]) {
|
while ([delayedEvents count]) {
|
||||||
|
|
Loading…
Reference in a new issue