From f6b3bddf74eb546819629738935fe28e0862e2d7 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 10 Nov 2015 15:56:44 +0000 Subject: [PATCH] Audio i/o: Took the safety offset into account when calculating latency in CoreAudio --- .../native/juce_mac_CoreAudio.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp b/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp index 763634e265..31af32b6e5 100644 --- a/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp +++ b/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp @@ -352,14 +352,20 @@ public: int getLatencyFromDevice (AudioObjectPropertyScope scope) const { - UInt32 lat = 0; - UInt32 size = sizeof (lat); + UInt32 latency = 0; + UInt32 size = sizeof (latency); AudioObjectPropertyAddress pa; pa.mElement = kAudioObjectPropertyElementMaster; pa.mSelector = kAudioDevicePropertyLatency; pa.mScope = scope; - AudioObjectGetPropertyData (deviceID, &pa, 0, nullptr, &size, &lat); - return (int) lat; + AudioObjectGetPropertyData (deviceID, &pa, 0, nullptr, &size, &latency); + + UInt32 safetyOffset = 0; + size = sizeof (safetyOffset); + pa.mSelector = kAudioDevicePropertySafetyOffset; + AudioObjectGetPropertyData (deviceID, &pa, 0, nullptr, &size, &safetyOffset); + + return (int) (latency + safetyOffset); } int getBitDepthFromDevice (AudioObjectPropertyScope scope) const