@@ -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); | ||||
} | } | ||||