From 40f6e2e041b7c0d690b1a22d4bb706feef991022 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 25 Jun 2013 08:24:14 +0200 Subject: ao_coreaudio: extract methods to lock/unlock device for digital output --- audio/out/ao_coreaudio_common.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'audio/out/ao_coreaudio_common.c') diff --git a/audio/out/ao_coreaudio_common.c b/audio/out/ao_coreaudio_common.c index 1755004f3f..289fa93b64 100644 --- a/audio/out/ao_coreaudio_common.c +++ b/audio/out/ao_coreaudio_common.c @@ -310,3 +310,22 @@ static OSStatus ca_device_listener(AudioObjectID object, uint32_t n_addresses, return ca_property_listener(kAudioDevicePropertyDeviceHasChanged, object, n_addresses, addresses, data); } + +static OSStatus ca_lock_device(AudioDeviceID device, pid_t *pid) { + *pid = getpid(); + OSStatus err = SetAudioProperty(device, kAudioDevicePropertyHogMode, + sizeof(*pid), pid); + if (err != noErr) + *pid = -1; + + return err; +} + +static OSStatus ca_unlock_device(AudioDeviceID device, pid_t *pid) { + if (*pid == getpid()) { + *pid = -1; + return SetAudioProperty(device, kAudioDevicePropertyHogMode, + sizeof(*pid), &pid); + } + return noErr; +} -- cgit v1.2.3