summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_coreaudio.c')
-rw-r--r--audio/out/ao_coreaudio.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c
index eee36bf4d3..67f34a45da 100644
--- a/audio/out/ao_coreaudio.c
+++ b/audio/out/ao_coreaudio.c
@@ -614,13 +614,8 @@ static void uninit(struct ao *ao, bool immed)
struct priv *p = ao->priv;
OSStatus err = noErr;
- if (!immed) {
- long long timeleft =
- (1000000LL * mp_ring_buffered(p->buffer)) / ao->bps;
- ca_msg(MSGL_DBG2, "%d bytes left @%d bps (%d usec)\n",
- mp_ring_buffered(p->buffer), ao->bps, (int)timeleft);
- mp_sleep_us((int)timeleft);
- }
+ if (!immed)
+ mp_sleep_us(get_delay(ao) * 1000000);
if (!p->b_digital) {
AudioOutputUnitStop(p->theOutputUnit);
@@ -628,18 +623,12 @@ static void uninit(struct ao *ao, bool immed)
AudioComponentInstanceDispose(p->theOutputUnit);
} else {
struct priv_d *d = p->digital;
- /* Stop device. */
+
err = AudioDeviceStop(p->i_selected_dev, d->renderCallback);
- if (err != noErr)
- ca_msg(MSGL_WARN, "AudioDeviceStop failed: [%4.4s]\n",
- (char *)&err);
+ CHECK_CA_WARN("failed to stop audio device");
- /* Remove IOProc callback. */
- err =
- AudioDeviceDestroyIOProcID(p->i_selected_dev, d->renderCallback);
- if (err != noErr)
- ca_msg(MSGL_WARN,
- "AudioDeviceRemoveIOProc failed: [%4.4s]\n", (char *)&err);
+ err = AudioDeviceDestroyIOProcID(p->i_selected_dev, d->renderCallback);
+ CHECK_CA_WARN("failed to remove device render callback");
err = ca_enable_mixing(p->i_selected_dev, d->changed_mixing);
CHECK_CA_WARN("can't re-enable mixing");