@@ -42,14 +42,15 @@ target_compile_definitions(AudioPluginHost PRIVATE | |||||
JUCE_ALSA=1 | JUCE_ALSA=1 | ||||
JUCE_DIRECTSOUND=1 | JUCE_DIRECTSOUND=1 | ||||
JUCE_PLUGINHOST_LADSPA=1 | JUCE_PLUGINHOST_LADSPA=1 | ||||
JUCE_PLUGINHOST_VST=0 | |||||
JUCE_PLUGINHOST_VST3=1 | JUCE_PLUGINHOST_VST3=1 | ||||
JUCE_PLUGINHOST_VST=0 | |||||
JUCE_USE_CAMERA=0 | JUCE_USE_CAMERA=0 | ||||
JUCE_USE_CDBURNER=0 | JUCE_USE_CDBURNER=0 | ||||
JUCE_USE_CDREADER=0 | JUCE_USE_CDREADER=0 | ||||
JUCE_USE_CURL=0 | JUCE_USE_CURL=0 | ||||
JUCE_USE_FLAC=0 | JUCE_USE_FLAC=0 | ||||
JUCE_USE_OGGVORBIS=1 | JUCE_USE_OGGVORBIS=1 | ||||
JUCE_VST3_HOST_CROSS_PLATFORM_UID=1 | |||||
JUCE_WASAPI=1 | JUCE_WASAPI=1 | ||||
JUCE_WEB_BROWSER=0) | JUCE_WEB_BROWSER=0) | ||||
@@ -2257,7 +2257,9 @@ function(juce_add_pip header) | |||||
target_compile_definitions(${JUCE_PIP_NAME} | target_compile_definitions(${JUCE_PIP_NAME} | ||||
PRIVATE ${pip_moduleflags} | PRIVATE ${pip_moduleflags} | ||||
PUBLIC JUCE_VST3_CAN_REPLACE_VST2=0) | |||||
PUBLIC | |||||
JUCE_VST3_CAN_REPLACE_VST2=0 | |||||
JUCE_VST3_HOST_CROSS_PLATFORM_UID=1) | |||||
_juce_get_pip_targets(${JUCE_PIP_NAME} pip_targets) | _juce_get_pip_targets(${JUCE_PIP_NAME} pip_targets) | ||||
@@ -63,6 +63,7 @@ static void doBasicProjectSetup (Project& project, const NewProjectTemplates::Pr | |||||
project.getMainGroup().addNewSubGroup ("Source", 0); | project.getMainGroup().addNewSubGroup ("Source", 0); | ||||
project.getConfigFlag ("JUCE_STRICT_REFCOUNTEDPOINTER") = true; | project.getConfigFlag ("JUCE_STRICT_REFCOUNTEDPOINTER") = true; | ||||
project.getConfigFlag ("JUCE_VST3_HOST_CROSS_PLATFORM_UID") = true; | |||||
project.getProjectValue (Ids::useAppConfig) = false; | project.getProjectValue (Ids::useAppConfig) = false; | ||||
project.getProjectValue (Ids::addUsingNamespaceToJuceHeader) = false; | project.getProjectValue (Ids::addUsingNamespaceToJuceHeader) = false; | ||||
@@ -81,10 +81,17 @@ static int warnOnFailureIfImplemented (int result) noexcept | |||||
//============================================================================== | //============================================================================== | ||||
static int getHashForTUID (const TUID& tuid) noexcept | static int getHashForTUID (const TUID& tuid) noexcept | ||||
{ | { | ||||
#if JUCE_VST3_HOST_CROSS_PLATFORM_UID | |||||
const FUID fuid { tuid }; | |||||
const uint32 inputArray[] { fuid.getLong1(), fuid.getLong2(), fuid.getLong3(), fuid.getLong4() }; | |||||
#else | |||||
const auto& inputArray = tuid; | |||||
#endif | |||||
uint32 value = 0; | uint32 value = 0; | ||||
for (int i = 0; i < numElementsInArray (tuid); ++i) | |||||
value = (value * 31) + (uint32) tuid[i]; | |||||
for (const auto& item : inputArray) | |||||
value = (value * 31) + (uint32) item; | |||||
return (int) value; | return (int) value; | ||||
} | } | ||||
@@ -102,6 +102,15 @@ | |||||
#define JUCE_CUSTOM_VST3_SDK 0 | #define JUCE_CUSTOM_VST3_SDK 0 | ||||
#endif | #endif | ||||
/** Config: JUCE_VST3_HOST_CROSS_PLATFORM_UID | |||||
If enabled, ensures that PluginDescription::uid will produce consistent values for VST3 plugins on all platforms. | |||||
It is recommended to enable this flag in all new projects. | |||||
Projects which predate this flag should leave it disabled, in case they need to interact with uid values which they previously stored. | |||||
*/ | |||||
#ifndef JUCE_VST3_HOST_CROSS_PLATFORM_UID | |||||
#define JUCE_VST3_HOST_CROSS_PLATFORM_UID 0 | |||||
#endif | |||||
#if ! (JUCE_PLUGINHOST_AU || JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_LADSPA) | #if ! (JUCE_PLUGINHOST_AU || JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_LADSPA) | ||||
// #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 and/or JUCE_PLUGINHOST_LADSPA flags if you're using this module!" | // #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 and/or JUCE_PLUGINHOST_LADSPA flags if you're using this module!" | ||||
#endif | #endif | ||||