From dae152ee999fc889b7bf1d12c7f4171972857934 Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 19 May 2025 19:19:53 +0100 Subject: [PATCH] VST3 Client: Move parameter migration warning to ensure that relevant macros are defined when error state is checked --- .../juce_audio_plugin_client.h | 8 ++- .../juce_audio_plugin_client_VST3.cpp | 52 +++++++++---------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client.h b/modules/juce_audio_plugin_client/juce_audio_plugin_client.h index 8d7715f326..05ffe248bc 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client.h +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client.h @@ -68,8 +68,12 @@ Enable this if you want your VST3 plug-in to load and save VST2 compatible state. This allows hosts to replace VST2 plug-ins with VST3 plug-ins. If - you change this option then your VST3 plug-in will be incompatible with - previous versions. + you change this option then your VST3 plug-in will, by default, be incompatible + with previous versions. + + If you've already released a VST2 and VST3 with this flag set to 0, you can still enable + migration from VST2 to VST3 on newer hosts. See VST3ClientExtensions::getCompatibleClasses() + and VST3ClientExtensions::getCompatibleParameterIds() for more details. */ #ifndef JUCE_VST3_CAN_REPLACE_VST2 #define JUCE_VST3_CAN_REPLACE_VST2 1 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 5c14c82600..74cdf48b90 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 @@ -38,6 +38,32 @@ //============================================================================== #if JucePlugin_Build_VST3 +JUCE_BEGIN_NO_SANITIZE ("vptr") + +#if JUCE_PLUGINHOST_VST3 + #if JUCE_MAC + #include + #endif + #undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY + #define JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY 1 +#endif + +#include + +#undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY +#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + #if JUCE_VST3_CAN_REPLACE_VST2 && ! JUCE_FORCE_USE_LEGACY_PARAM_IDS && ! JUCE_IGNORE_VST3_MISMATCHED_PARAMETER_ID_WARNING // If you encounter this error there may be an issue migrating parameter @@ -70,32 +96,6 @@ #error You may have a conflict with parameter automation between VST2 and VST3 versions of your plugin. See the comment above for more details. #endif -JUCE_BEGIN_NO_SANITIZE ("vptr") - -#if JUCE_PLUGINHOST_VST3 - #if JUCE_MAC - #include - #endif - #undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY - #define JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY 1 -#endif - -#include - -#undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY -#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - #ifndef JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS #if JucePlugin_WantsMidiInput #define JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS 1