diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-06-25 08:24:14 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-07-22 21:53:17 +0200 |
commit | 40f6e2e041b7c0d690b1a22d4bb706feef991022 (patch) | |
tree | 31740f1c7d737f4e54b9c17474d15e12df63c7ac /audio/out/ao_coreaudio.c | |
parent | e3ce0f0f8e7865d5396347cd440e1aad8bcad680 (diff) | |
download | mpv-40f6e2e041b7c0d690b1a22d4bb706feef991022.tar.bz2 mpv-40f6e2e041b7c0d690b1a22d4bb706feef991022.tar.xz |
ao_coreaudio: extract methods to lock/unlock device for digital output
Diffstat (limited to 'audio/out/ao_coreaudio.c')
-rw-r--r-- | audio/out/ao_coreaudio.c | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c index ff4fb62602..a633849aca 100644 --- a/audio/out/ao_coreaudio.c +++ b/audio/out/ao_coreaudio.c @@ -431,16 +431,8 @@ static int init_digital(struct ao *ao, AudioStreamBasicDescription asbd) p->b_digital = 1; - d->i_hog_pid = getpid(); - - err = SetAudioProperty(p->i_selected_dev, - kAudioDevicePropertyHogMode, - sizeof(d->i_hog_pid), &d->i_hog_pid); - - if (! CHECK_CA_WARN("faild to set hogmode")) { - d->i_hog_pid = -1; - goto coreaudio_error; - } + err = ca_lock_device(p->i_selected_dev, &d->i_hog_pid); + CHECK_CA_ERROR("faild to set hogmode"); p_addr = (AudioObjectPropertyAddress) { .mSelector = kAudioDevicePropertySupportsMixing, @@ -586,15 +578,8 @@ static int init_digital(struct ao *ao, AudioStreamBasicDescription asbd) return CONTROL_TRUE; coreaudio_error: - if (d->i_hog_pid == getpid()) { - d->i_hog_pid = -1; - err = SetAudioProperty(p->i_selected_dev, - kAudioDevicePropertyHogMode, - sizeof(d->i_hog_pid), &d->i_hog_pid); - if (err != noErr) - ca_msg(MSGL_WARN, "Could not release hogmode: [%4.4s]\n", - (char *)&err); - } + err = ca_unlock_device(p->i_selected_dev, &d->i_hog_pid); + CHECK_CA_WARN("can't release hog mode"); return CONTROL_FALSE; } @@ -793,15 +778,9 @@ static void uninit(struct ao *ao, bool immed) ca_msg(MSGL_WARN, "failed to set mixmode: [%4.4s]\n", (char *)&err); } - if (d->i_hog_pid == getpid()) { - d->i_hog_pid = -1; - err = SetAudioProperty(p->i_selected_dev, - kAudioDevicePropertyHogMode, - sizeof(d->i_hog_pid), &d->i_hog_pid); - if (err != noErr) - ca_msg(MSGL_WARN, - "Could not release hogmode: [%4.4s]\n", (char *)&err); - } + + err = ca_unlock_device(p->i_selected_dev, &d->i_hog_pid); + CHECK_CA_WARN("can't release hog mode"); } } |