Signed-off-by: falkTX <falktx@falktx.com>pull/452/head
| @@ -698,11 +698,11 @@ endif | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Export | # Export | ||||
| # ifeq ($(HAVE_DGL),true) | |||||
| # $(BUILD_DIR)/export$(APP_EXT): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_EXPORT.cpp.o $(BUILD_DIR)/DistrhoUIMain_EXPORT.cpp.o $(DGL_LIB) | |||||
| # else | |||||
| ifeq ($(HAVE_DGL),true) | |||||
| $(BUILD_DIR)/export$(APP_EXT): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_EXPORT.cpp.o $(BUILD_DIR)/DistrhoUIMain_EXPORT.cpp.o $(DGL_LIB) | |||||
| else | |||||
| $(BUILD_DIR)/export$(APP_EXT): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_EXPORT.cpp.o | $(BUILD_DIR)/export$(APP_EXT): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_EXPORT.cpp.o | ||||
| # endif | |||||
| endif | |||||
| -@mkdir -p $(shell dirname $@) | -@mkdir -p $(shell dirname $@) | ||||
| @echo "Creating export tool for $(NAME)" | @echo "Creating export tool for $(NAME)" | ||||
| $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(EXTRA_DSP_LIBS) $(EXTRA_UI_LIBS) $(DGL_LIBS) -o $@ | $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(EXTRA_DSP_LIBS) $(EXTRA_UI_LIBS) $(DGL_LIBS) -o $@ | ||||
| @@ -44,7 +44,7 @@ | |||||
| # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 1 | # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 1 | ||||
| # include "src/DistrhoUIVST3.cpp" | # include "src/DistrhoUIVST3.cpp" | ||||
| #elif defined(DISTRHO_PLUGIN_TARGET_EXPORT) | #elif defined(DISTRHO_PLUGIN_TARGET_EXPORT) | ||||
| # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 0 | |||||
| # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 1 | |||||
| #elif defined(DISTRHO_PLUGIN_TARGET_SHARED) || defined(DISTRHO_PLUGIN_TARGET_STATIC) | #elif defined(DISTRHO_PLUGIN_TARGET_SHARED) || defined(DISTRHO_PLUGIN_TARGET_STATIC) | ||||
| # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 1 | # define DISTRHO_PLUGIN_AND_UI_IN_SINGLE_OBJECT 1 | ||||
| #else | #else | ||||
| @@ -393,14 +393,23 @@ public: | |||||
| return kAudioUnitErr_InvalidProperty; | return kAudioUnitErr_InvalidProperty; | ||||
| #endif | #endif | ||||
| case 19001: | |||||
| #if DISTRHO_PLUGIN_HAS_UI && DISTRHO_PLUGIN_WANT_DIRECT_ACCESS | |||||
| case 'DPFa': | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement == 0, inElement, kAudioUnitErr_InvalidElement); | |||||
| outDataSize = sizeof(void*); | |||||
| outWritable = false; | |||||
| return noErr; | |||||
| #endif | |||||
| case 'DPFp': | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | ||||
| outDataSize = sizeof(float); | outDataSize = sizeof(float); | ||||
| outWritable = true; | outWritable = true; | ||||
| return noErr; | return noErr; | ||||
| case 19002: | |||||
| case 'DPFt': | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | ||||
| outDataSize = sizeof(bool); | outDataSize = sizeof(bool); | ||||
| @@ -690,6 +699,12 @@ public: | |||||
| } | } | ||||
| return noErr; | return noErr; | ||||
| #endif | #endif | ||||
| #if DISTRHO_PLUGIN_HAS_UI && DISTRHO_PLUGIN_WANT_DIRECT_ACCESS | |||||
| case 'DPFa': | |||||
| *static_cast<void**>(outData) = fPlugin.getInstancePointer(); | |||||
| return noErr; | |||||
| #endif | |||||
| } | } | ||||
| d_stdout("TODO GetProperty(%d:%s, %d:%s, %d, ...)", inProp, AudioUnitPropertyID2Str(inProp), inScope, AudioUnitScope2Str(inScope), inElement); | d_stdout("TODO GetProperty(%d:%s, %d:%s, %d, ...)", inProp, AudioUnitPropertyID2Str(inProp), inScope, AudioUnitScope2Str(inScope), inElement); | ||||
| @@ -902,7 +917,7 @@ public: | |||||
| // TODO | // TODO | ||||
| return noErr; | return noErr; | ||||
| case 19001: | |||||
| case 'DPFp': | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inDataSize == sizeof(float), inDataSize, kAudioUnitErr_InvalidPropertyValue); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inDataSize == sizeof(float), inDataSize, kAudioUnitErr_InvalidPropertyValue); | ||||
| @@ -924,7 +939,7 @@ public: | |||||
| } | } | ||||
| return noErr; | return noErr; | ||||
| case 19002: | |||||
| case 'DPFt': | |||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement < fParameterCount, inElement, kAudioUnitErr_InvalidElement); | ||||
| DISTRHO_SAFE_ASSERT_UINT_RETURN(inDataSize == sizeof(bool), inDataSize, kAudioUnitErr_InvalidPropertyValue); | DISTRHO_SAFE_ASSERT_UINT_RETURN(inDataSize == sizeof(bool), inDataSize, kAudioUnitErr_InvalidPropertyValue); | ||||
| @@ -1041,7 +1056,7 @@ public: | |||||
| fLastParameterValues[param] = value; | fLastParameterValues[param] = value; | ||||
| fPlugin.setParameterValue(param, value); | fPlugin.setParameterValue(param, value); | ||||
| // TODO flag param only, notify listeners later on bg thread (sem_post etc) | // TODO flag param only, notify listeners later on bg thread (sem_post etc) | ||||
| notifyListeners(19003, kAudioUnitScope_Global, param); | |||||
| notifyListeners('DPFP', kAudioUnitScope_Global, param); | |||||
| } | } | ||||
| return noErr; | return noErr; | ||||
| @@ -81,12 +81,12 @@ public: | |||||
| CFRunLoopAddTimer(CFRunLoopGetCurrent(), fTimerRef, kCFRunLoopCommonModes); | CFRunLoopAddTimer(CFRunLoopGetCurrent(), fTimerRef, kCFRunLoopCommonModes); | ||||
| AudioUnitAddPropertyListener(fComponent, 19003, auPropertyChangedCallback, this); | |||||
| AudioUnitAddPropertyListener(fComponent, 'DPFP', auPropertyChangedCallback, this); | |||||
| } | } | ||||
| ~DPF_UI_AU() | ~DPF_UI_AU() | ||||
| { | { | ||||
| AudioUnitRemovePropertyListenerWithUserData(fComponent, 19003, auPropertyChangedCallback, this); | |||||
| AudioUnitRemovePropertyListenerWithUserData(fComponent, 'DPFP', auPropertyChangedCallback, this); | |||||
| if (fTimerRef != nullptr) | if (fTimerRef != nullptr) | ||||
| { | { | ||||
| @@ -126,7 +126,7 @@ private: | |||||
| { | { | ||||
| switch (prop) | switch (prop) | ||||
| { | { | ||||
| case 19003: | |||||
| case 'DPFP': | |||||
| { | { | ||||
| AudioUnitParameterValue value; | AudioUnitParameterValue value; | ||||
| if (AudioUnitGetParameter(fComponent, elem, kAudioUnitScope_Global, 0, &value) == noErr) | if (AudioUnitGetParameter(fComponent, elem, kAudioUnitScope_Global, 0, &value) == noErr) | ||||
| @@ -156,7 +156,7 @@ private: | |||||
| void editParameter(const uint32_t rindex, const bool started) const | void editParameter(const uint32_t rindex, const bool started) const | ||||
| { | { | ||||
| AudioUnitSetProperty(fComponent, 19002, kAudioUnitScope_Global, rindex, &started, sizeof(bool)); | |||||
| AudioUnitSetProperty(fComponent, 'DPFt', kAudioUnitScope_Global, rindex, &started, sizeof(bool)); | |||||
| } | } | ||||
| static void editParameterCallback(void* const ptr, const uint32_t rindex, const bool started) | static void editParameterCallback(void* const ptr, const uint32_t rindex, const bool started) | ||||
| @@ -166,7 +166,7 @@ private: | |||||
| void setParameterValue(const uint32_t rindex, const float value) | void setParameterValue(const uint32_t rindex, const float value) | ||||
| { | { | ||||
| AudioUnitSetProperty(fComponent, 19001, kAudioUnitScope_Global, rindex, &value, sizeof(float)); | |||||
| AudioUnitSetProperty(fComponent, 'DPFp', kAudioUnitScope_Global, rindex, &value, sizeof(float)); | |||||
| } | } | ||||
| static void setParameterCallback(void* const ptr, const uint32_t rindex, const float value) | static void setParameterCallback(void* const ptr, const uint32_t rindex, const float value) | ||||
| @@ -239,7 +239,12 @@ END_NAMESPACE_DISTRHO | |||||
| { | { | ||||
| const double sampleRate = d_nextSampleRate; | const double sampleRate = d_nextSampleRate; | ||||
| const intptr_t winId = 0; | const intptr_t winId = 0; | ||||
| void* const instancePointer = nullptr; | |||||
| void* instancePointer = nullptr; | |||||
| #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS | |||||
| UInt32 size = sizeof(void*); | |||||
| AudioUnitGetProperty(component, 'DPFa', kAudioUnitScope_Global, 0, &instancePointer, &size); | |||||
| #endif | |||||
| ui = new DPF_UI_AU(component, winId, sampleRate, instancePointer); | ui = new DPF_UI_AU(component, winId, sampleRate, instancePointer); | ||||