| @@ -101,8 +101,6 @@ namespace juce | |||||
| const int32_t juceChunkType = 'juce'; | const int32_t juceChunkType = 'juce'; | ||||
| const int maxAAXChannels = 8; | const int maxAAXChannels = 8; | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_AAX); | |||||
| //============================================================================== | //============================================================================== | ||||
| struct AAXClasses | struct AAXClasses | ||||
| { | { | ||||
| @@ -563,7 +561,7 @@ struct AAXClasses | |||||
| static AAX_CEffectParameters* AAX_CALLBACK Create() | static AAX_CEffectParameters* AAX_CALLBACK Create() | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AAX); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AAX; | |||||
| return new JuceAAX_Processor(); | return new JuceAAX_Processor(); | ||||
| } | } | ||||
| @@ -1549,7 +1547,7 @@ struct AAXClasses | |||||
| static void getPlugInDescription (AAX_IEffectDescriptor& descriptor) | static void getPlugInDescription (AAX_IEffectDescriptor& descriptor) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AAX); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AAX; | |||||
| ScopedPointer<AudioProcessor> plugin = createPluginFilterOfType (AudioProcessor::wrapperType_AAX); | ScopedPointer<AudioProcessor> plugin = createPluginFilterOfType (AudioProcessor::wrapperType_AAX); | ||||
| PluginBusUtilities busUtils (*plugin, false, maxAAXChannels); | PluginBusUtilities busUtils (*plugin, false, maxAAXChannels); | ||||
| @@ -80,8 +80,6 @@ | |||||
| #include "juce_AU_Shared.h" | #include "juce_AU_Shared.h" | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_AudioUnit); | |||||
| //============================================================================== | //============================================================================== | ||||
| static Array<void*> activePlugins, activeUIs; | static Array<void*> activePlugins, activeUIs; | ||||
| @@ -2090,7 +2088,7 @@ private: | |||||
| extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \ | extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \ | ||||
| extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj) \ | extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj) \ | ||||
| { \ | { \ | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AudioUnit); \ | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AudioUnit; \ | |||||
| return ComponentEntryPoint<Class>::Dispatch (params, obj); \ | return ComponentEntryPoint<Class>::Dispatch (params, obj); \ | ||||
| } | } | ||||
| @@ -2104,7 +2102,7 @@ private: | |||||
| extern "C" __attribute__((visibility("default"))) void* Name ## Factory (const AudioComponentDescription* desc); \ | extern "C" __attribute__((visibility("default"))) void* Name ## Factory (const AudioComponentDescription* desc); \ | ||||
| extern "C" __attribute__((visibility("default"))) void* Name ## Factory (const AudioComponentDescription* desc) \ | extern "C" __attribute__((visibility("default"))) void* Name ## Factory (const AudioComponentDescription* desc) \ | ||||
| { \ | { \ | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AudioUnit); \ | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AudioUnit; \ | |||||
| return FACTORY_BASE_CLASS<Class>::Factory (desc); \ | return FACTORY_BASE_CLASS<Class>::Factory (desc); \ | ||||
| } | } | ||||
| @@ -72,8 +72,6 @@ | |||||
| #pragma clang diagnostic push | #pragma clang diagnostic push | ||||
| #pragma clang diagnostic ignored "-Wnullability-completeness" | #pragma clang diagnostic ignored "-Wnullability-completeness" | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_AudioUnitv3); | |||||
| // TODO: ask Timur: use SFINAE to automatically generate this for all NSObjects | // TODO: ask Timur: use SFINAE to automatically generate this for all NSObjects | ||||
| template <> struct ContainerDeletePolicy<AUAudioUnitBusArray> { static void destroy (NSObject* o) { [o release]; } }; | template <> struct ContainerDeletePolicy<AUAudioUnitBusArray> { static void destroy (NSObject* o) { [o release]; } }; | ||||
| template <> struct ContainerDeletePolicy<AUParameterTree> { static void destroy (NSObject* o) { [o release]; } }; | template <> struct ContainerDeletePolicy<AUParameterTree> { static void destroy (NSObject* o) { [o release]; } }; | ||||
| @@ -1183,7 +1181,7 @@ const double JuceAudioUnitv3::kDefaultSampleRate = 44100.0; | |||||
| JuceAudioUnitv3Base* JuceAudioUnitv3Base::create (AUAudioUnit* audioUnit, AudioComponentDescription descr, AudioComponentInstantiationOptions options, NSError** error) | JuceAudioUnitv3Base* JuceAudioUnitv3Base::create (AUAudioUnit* audioUnit, AudioComponentDescription descr, AudioComponentInstantiationOptions options, NSError** error) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AudioUnitv3); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AudioUnitv3; | |||||
| return new JuceAudioUnitv3 (audioUnit, descr, options, error); | return new JuceAudioUnitv3 (audioUnit, descr, options, error); | ||||
| } | } | ||||
| @@ -1197,7 +1195,7 @@ public: | |||||
| { | { | ||||
| jassert (MessageManager::getInstance()->isThisTheMessageThread()); | jassert (MessageManager::getInstance()->isThisTheMessageThread()); | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_AudioUnitv3); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AudioUnitv3; | |||||
| initialiseJuce_GUI(); | initialiseJuce_GUI(); | ||||
| } | } | ||||
| @@ -105,8 +105,6 @@ | |||||
| #include "../utility/juce_IncludeModuleHeaders.h" | #include "../utility/juce_IncludeModuleHeaders.h" | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_RTAS); | |||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||
| #pragma pack (pop) | #pragma pack (pop) | ||||
| @@ -958,7 +956,7 @@ private: | |||||
| #if JUCE_WINDOWS | #if JUCE_WINDOWS | ||||
| Process::setCurrentModuleInstanceHandle (gThisModule); | Process::setCurrentModuleInstanceHandle (gThisModule); | ||||
| #endif | #endif | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_RTAS); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_RTAS; | |||||
| initialiseJuce_GUI(); | initialiseJuce_GUI(); | ||||
| return new JucePlugInProcess(); | return new JucePlugInProcess(); | ||||
| @@ -35,8 +35,6 @@ | |||||
| #include <juce_gui_extra/juce_gui_extra.h> | #include <juce_gui_extra/juce_gui_extra.h> | ||||
| #include <juce_audio_utils/juce_audio_utils.h> | #include <juce_audio_utils/juce_audio_utils.h> | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_Standalone); | |||||
| // You can set this flag in your build if you need to specify a different | // You can set this flag in your build if you need to specify a different | ||||
| // standalone JUCEApplication class for your app to use. If you don't | // standalone JUCEApplication class for your app to use. If you don't | ||||
| // set it then by default we'll just create a simple one as below. | // set it then by default we'll just create a simple one as below. | ||||
| @@ -55,7 +53,7 @@ class StandaloneFilterApp : public JUCEApplication | |||||
| public: | public: | ||||
| StandaloneFilterApp() | StandaloneFilterApp() | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_Standalone); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_Standalone; | |||||
| } | } | ||||
| const String getApplicationName() override { return JucePlugin_Name; } | const String getApplicationName() override { return JucePlugin_Name; } | ||||
| @@ -111,8 +111,6 @@ | |||||
| class JuceVSTWrapper; | class JuceVSTWrapper; | ||||
| static bool recursionCheck = false; | static bool recursionCheck = false; | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_VST); | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| @@ -1994,7 +1992,7 @@ namespace | |||||
| JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster); | JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster); | ||||
| JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster) | JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| initialiseMacVST(); | initialiseMacVST(); | ||||
| @@ -2006,7 +2004,7 @@ namespace | |||||
| JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster); | JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster); | ||||
| JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster) | JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| initialiseMacVST(); | initialiseMacVST(); | ||||
| @@ -2022,7 +2020,7 @@ namespace | |||||
| JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster); | JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster); | ||||
| JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster) | JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| SharedMessageThread::getInstance(); | SharedMessageThread::getInstance(); | ||||
| return pluginEntryPoint (audioMaster); | return pluginEntryPoint (audioMaster); | ||||
| @@ -2031,7 +2029,7 @@ namespace | |||||
| JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) asm ("main"); | JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) asm ("main"); | ||||
| JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) | JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| return VSTPluginMain (audioMaster); | return VSTPluginMain (audioMaster); | ||||
| } | } | ||||
| @@ -2046,7 +2044,7 @@ namespace | |||||
| extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback audioMaster) | extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| return pluginEntryPoint (audioMaster); | return pluginEntryPoint (audioMaster); | ||||
| } | } | ||||
| @@ -2054,7 +2052,7 @@ namespace | |||||
| #ifndef JUCE_64BIT // (can't compile this on win64, but it's not needed anyway with VST2.4) | #ifndef JUCE_64BIT // (can't compile this on win64, but it's not needed anyway with VST2.4) | ||||
| extern "C" __declspec (dllexport) int main (audioMasterCallback audioMaster) | extern "C" __declspec (dllexport) int main (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST; | |||||
| return (int) pluginEntryPoint (audioMaster); | return (int) pluginEntryPoint (audioMaster); | ||||
| } | } | ||||
| @@ -63,8 +63,6 @@ | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| JUCE_DEFINE_WRAPPER_TYPE (wrapperType_VST3); | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| @@ -2410,7 +2408,7 @@ private: | |||||
| // The VST3 plugin entry point. | // The VST3 plugin entry point. | ||||
| JUCE_EXPORTED_FUNCTION IPluginFactory* PLUGIN_API GetPluginFactory() | JUCE_EXPORTED_FUNCTION IPluginFactory* PLUGIN_API GetPluginFactory() | ||||
| { | { | ||||
| JUCE_DECLARE_WRAPPER_TYPE (wrapperType_VST3); | |||||
| PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST3; | |||||
| #if JUCE_WINDOWS | #if JUCE_WINDOWS | ||||
| // Cunning trick to force this function to be exported. Life's too short to | // Cunning trick to force this function to be exported. Life's too short to | ||||
| @@ -22,18 +22,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifndef DOXYGEN | |||||
| // @internal | |||||
| extern JUCE_API int* jucePlugInClientCurrentWrapperType; | |||||
| // this is ugly hack is needed by juce_getExecutableFile to have a wrapper | |||||
| // dependent symbol | |||||
| #define JUCE_DEFINE_WRAPPER_TYPE(x) JUCE_API int jucePlugInClientCurrentWrapperType_ ## x = static_cast<int> (AudioProcessor::x); | |||||
| #define JUCE_DECLARE_WRAPPER_TYPE(x) jucePlugInClientCurrentWrapperType = &jucePlugInClientCurrentWrapperType_ ## x; | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| class PluginHostType | class PluginHostType | ||||
| { | { | ||||
| @@ -190,15 +178,15 @@ public: | |||||
| @see AudioProcessor::wrapperType | @see AudioProcessor::wrapperType | ||||
| */ | */ | ||||
| static AudioProcessor::WrapperType getPluginLoadedAs() noexcept | |||||
| { | |||||
| if (jucePlugInClientCurrentWrapperType != nullptr) | |||||
| return static_cast<AudioProcessor::WrapperType> (*jucePlugInClientCurrentWrapperType); | |||||
| return AudioProcessor::wrapperType_Undefined; | |||||
| } | |||||
| static AudioProcessor::WrapperType getPluginLoadedAs() noexcept { return jucePlugInClientCurrentWrapperType; } | |||||
| //============================================================================== | //============================================================================== | ||||
| #ifndef DOXYGEN | |||||
| // @internal | |||||
| static AudioProcessor::WrapperType jucePlugInClientCurrentWrapperType; | |||||
| #endif | |||||
| private: | private: | ||||
| static HostType getHostType() | static HostType getHostType() | ||||
| { | { | ||||
| @@ -32,7 +32,7 @@ | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| int* jucePlugInClientCurrentWrapperType = nullptr; | |||||
| AudioProcessor::WrapperType PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_Undefined; | |||||
| } | } | ||||
| #if _MSC_VER || JUCE_MINGW | #if _MSC_VER || JUCE_MINGW | ||||
| @@ -26,10 +26,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| #ifdef JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | |||||
| extern int* jucePlugInClientCurrentWrapperType; | |||||
| #endif | |||||
| CriticalSection::CriticalSection() noexcept | CriticalSection::CriticalSection() noexcept | ||||
| { | { | ||||
| pthread_mutexattr_t atts; | pthread_mutexattr_t atts; | ||||
| @@ -634,12 +630,7 @@ File juce_getExecutableFile() | |||||
| { | { | ||||
| Dl_info exeInfo; | Dl_info exeInfo; | ||||
| #ifdef JUCE_MODULE_AVAILABLE_juce_audio_plugin_client | |||||
| void* localSymbol = jucePlugInClientCurrentWrapperType != nullptr ? (void*) jucePlugInClientCurrentWrapperType | |||||
| : (void*) juce_getExecutableFile; | |||||
| #else | |||||
| void* localSymbol = (void*) juce_getExecutableFile; | void* localSymbol = (void*) juce_getExecutableFile; | ||||
| #endif | |||||
| dladdr (localSymbol, &exeInfo); | dladdr (localSymbol, &exeInfo); | ||||
| return CharPointer_UTF8 (exeInfo.dli_fname); | return CharPointer_UTF8 (exeInfo.dli_fname); | ||||
| } | } | ||||