summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_coreaudio.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c
index e3ed62136c..7ceaff6646 100644
--- a/libao2/ao_coreaudio.c
+++ b/libao2/ao_coreaudio.c
@@ -1025,6 +1025,7 @@ static OSStatus RenderCallbackSPDIF( AudioDeviceID inDevice,
static int play(void* output_samples,int num_bytes,int flags)
{
int wrote, b_digital;
+ SInt32 exit_reason;
// Check whether we need to reset the digital output stream.
if (ao->b_digital && ao->b_stream_format_changed)
@@ -1052,6 +1053,11 @@ static int play(void* output_samples,int num_bytes,int flags)
wrote=write_buffer(output_samples, num_bytes);
audio_resume();
+
+ do {
+ exit_reason = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01, true);
+ } while (exit_reason == kCFRunLoopRunHandledSource);
+
return wrote;
}