From f49ab1d50e7d068e33c8034ce85ab8dfbdc4dcb5 Mon Sep 17 00:00:00 2001 From: Anthony Nicholls Date: Thu, 22 Jun 2023 11:38:34 +0100 Subject: [PATCH] AUv2: Update a plugins latency after AudioUnitInitialize is called --- .../format_types/juce_AudioUnitPluginFormat.mm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm index b7bba1e5f0..4977541ae5 100644 --- a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +++ b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm @@ -1290,8 +1290,6 @@ public: setRateAndBufferSizeDetails ((double) newSampleRate, estimatedSamplesPerBlock); - updateLatency(); - zerostruct (timeStamp); timeStamp.mSampleTime = 0; timeStamp.mHostTime = mach_absolute_time(); @@ -1306,19 +1304,23 @@ public: if (! syncBusLayouts (getBusesLayout(), false, ignore)) return; - prepared = (AudioUnitInitialize (audioUnit) == noErr); - - if (prepared) + prepared = [&] { + if (AudioUnitInitialize (audioUnit) != noErr) + return false; + if (! haveParameterList) refreshParameterList(); if (! syncBusLayouts (getBusesLayout(), true, ignore)) { - prepared = false; AudioUnitUninitialize (audioUnit); + return false; } - } + + updateLatency(); + return true; + }(); inMapping .setUpMapping (audioUnit, true); outMapping.setUpMapping (audioUnit, false);