From 89f19503a219e9c5fdb4a095b9363b5e3f6136ea Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 16 Oct 2023 11:38:05 +0100 Subject: [PATCH] VST3 Client: Avoid returning kResultFalse from getCompatibilityJSON --- .../juce_audio_plugin_client_VST3.cpp | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp index 62703763d9..cd892164d7 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp @@ -3965,33 +3965,38 @@ public: auto filter = createPluginFilterOfType (AudioProcessor::WrapperType::wrapperType_VST3); auto* extensions = filter->getVST3ClientExtensions(); - if (extensions == nullptr || extensions->getCompatibleClasses().empty()) - return kResultFalse; - - DynamicObject::Ptr object { new DynamicObject }; - - // New iid is the ID of our Audio Effect class - object->setProperty ("New", String (VST3::UID (JuceVST3Component::iid).toString())); - object->setProperty ("Old", [&] + const auto compatibilityObjects = [&] { - Array oldArray; + if (extensions == nullptr || extensions->getCompatibleClasses().empty()) + return Array(); - for (const auto& uid : extensions->getCompatibleClasses()) + DynamicObject::Ptr object { new DynamicObject }; + + // New iid is the ID of our Audio Effect class + object->setProperty ("New", String (VST3::UID (JuceVST3Component::iid).toString())); + object->setProperty ("Old", [&] { - // All UIDs returned from getCompatibleClasses should be 32 characters long - jassert (uid.length() == 32); + Array oldArray; - // All UIDs returned from getCompatibleClasses should be in hex notation - jassert (uid.containsOnly ("ABCDEF0123456789")); + for (const auto& uid : extensions->getCompatibleClasses()) + { + // All UIDs returned from getCompatibleClasses should be 32 characters long + jassert (uid.length() == 32); - oldArray.add (uid); - } + // All UIDs returned from getCompatibleClasses should be in hex notation + jassert (uid.containsOnly ("ABCDEF0123456789")); - return oldArray; - }()); + oldArray.add (uid); + } + + return oldArray; + }()); + + return Array { object.get() }; + }(); MemoryOutputStream memory; - JSON::writeToStream (memory, var { Array { object.get() } }); + JSON::writeToStream (memory, var { compatibilityObjects }); return stream->write (memory.getMemoryBlock().getData(), (Steinberg::int32) memory.getDataSize()); }