From 334bd2a926773a1c2fc2797db398df3a0760349d Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 3 Aug 2021 18:27:23 +0100 Subject: [PATCH] AUv3 Client: Notify host when updating current program --- .../AU/juce_AUv3_Wrapper.mm | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm index ae818a5daa..d67b3ca9e6 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm @@ -934,14 +934,39 @@ public: } #endif + struct ScopedKeyChange + { + ScopedKeyChange (AUAudioUnit* a, NSString* k) + : au (a), key (k) + { + [au willChangeValueForKey: key]; + } + + ~ScopedKeyChange() + { + [au didChangeValueForKey: key]; + } + + AUAudioUnit* au; + NSString* key; + }; + //============================================================================== - void audioProcessorChanged (AudioProcessor* processor, const ChangeDetails&) override + void audioProcessorChanged (AudioProcessor* processor, const ChangeDetails& details) override { ignoreUnused (processor); - [au willChangeValueForKey: @"allParameterValues"]; - addPresets(); - [au didChangeValueForKey: @"allParameterValues"]; + if (! details.programChanged) + return; + + { + ScopedKeyChange scope (au, @"allParameterValues"); + addPresets(); + } + + { + ScopedKeyChange scope (au, @"currentPreset"); + } } void audioProcessorParameterChanged (AudioProcessor*, int idx, float newValue) override