From 3520f6c4f6dece4eb7b09ed80c021f064b3563f7 Mon Sep 17 00:00:00 2001 From: reuk Date: Fri, 13 Mar 2020 15:15:44 +0000 Subject: [PATCH] Standalone: Put CreatePluginFilter in a common header --- .../Standalone/juce_StandaloneFilterApp.cpp | 2 - .../Standalone/juce_StandaloneFilterWindow.h | 14 ++--- .../juce_audio_plugin_client.h | 2 - .../utility/juce_CreatePluginFilter.h | 51 +++++++++++++++++++ .../utility/juce_IncludeModuleHeaders.h | 1 + .../utility/juce_PluginUtilities.cpp | 17 ------- 6 files changed, 55 insertions(+), 32 deletions(-) create mode 100644 modules/juce_audio_plugin_client/utility/juce_CreatePluginFilter.h diff --git a/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp b/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp index b6d7c2b7a9..59be86f754 100644 --- a/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp +++ b/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp @@ -41,8 +41,6 @@ // set it then by default we'll just create a simple one as below. #if ! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP -juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - #include "juce_StandaloneFilterWindow.h" namespace juce diff --git a/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h b/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h index 44edaf3c80..e3d8c3aac0 100644 --- a/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h +++ b/modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h @@ -24,9 +24,9 @@ ============================================================================== */ -#if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client - #include -#endif +#pragma once + +#include "../utility/juce_CreatePluginFilter.h" namespace juce { @@ -123,15 +123,7 @@ public: //============================================================================== virtual void createPlugin() { - #if JUCE_MODULE_AVAILABLE_juce_audio_plugin_client processor.reset (createPluginFilterOfType (AudioProcessor::wrapperType_Standalone)); - #else - AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); - processor.reset (createPluginFilter()); - AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined); - #endif - jassert (processor != nullptr); // Your createPluginFilter() function must return a valid object! - processor->disableNonMainBuses(); processor->setRateAndBufferSizeDetails (44100, 512); 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 b40666a5f6..5fce55a8ff 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client.h +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client.h @@ -129,5 +129,3 @@ #include "utility/juce_PluginHostType.h" #include "VST/juce_VSTCallbackHandler.h" - -juce::AudioProcessor* JUCE_API JUCE_CALLTYPE createPluginFilterOfType (juce::AudioProcessor::WrapperType); diff --git a/modules/juce_audio_plugin_client/utility/juce_CreatePluginFilter.h b/modules/juce_audio_plugin_client/utility/juce_CreatePluginFilter.h new file mode 100644 index 0000000000..2939675503 --- /dev/null +++ b/modules/juce_audio_plugin_client/utility/juce_CreatePluginFilter.h @@ -0,0 +1,51 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2017 - ROLI Ltd. + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 5 End-User License + Agreement and JUCE 5 Privacy Policy (both updated and effective as of the + 27th April 2017). + + End User License Agreement: www.juce.com/juce-5-licence + Privacy Policy: www.juce.com/juce-5-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +#include + +/** Somewhere in the codebase of your plugin, you need to implement this function + and make it return a new instance of the filter subclass that you're building. +*/ +juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter(); + +namespace juce +{ + +inline AudioProcessor* JUCE_API JUCE_CALLTYPE createPluginFilterOfType (AudioProcessor::WrapperType type) +{ + AudioProcessor::setTypeOfNextNewPlugin (type); + AudioProcessor* const pluginInstance = ::createPluginFilter(); + AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined); + + // your createPluginFilter() method must return an object! + jassert (pluginInstance != nullptr && pluginInstance->wrapperType == type); + + return pluginInstance; +} + +} // namespace juce diff --git a/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h b/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h index 05dfde68a6..0c820a990d 100644 --- a/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h +++ b/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h @@ -25,6 +25,7 @@ */ #include "../juce_audio_plugin_client.h" +#include "juce_CreatePluginFilter.h" namespace juce { diff --git a/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp b/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp index 5979dff71c..059686d89f 100644 --- a/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp +++ b/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp @@ -150,11 +150,6 @@ bool JUCE_API handleManufacturerSpecificVST2Opcode (int32 index, pointer_sized_i } // namespace juce //============================================================================== -/** Somewhere in the codebase of your plugin, you need to implement this function - and make it return a new instance of the filter subclass that you're building. -*/ -extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - #if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP) extern bool JUCE_CALLTYPE juce_isInterAppAudioConnected(); extern void JUCE_CALLTYPE juce_switchToHostApplication(); @@ -164,18 +159,6 @@ extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); #endif #endif -AudioProcessor* JUCE_API JUCE_CALLTYPE createPluginFilterOfType (AudioProcessor::WrapperType type) -{ - AudioProcessor::setTypeOfNextNewPlugin (type); - AudioProcessor* const pluginInstance = createPluginFilter(); - AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined); - - // your createPluginFilter() method must return an object! - jassert (pluginInstance != nullptr && pluginInstance->wrapperType == type); - - return pluginInstance; -} - bool PluginHostType::isInterAppAudioConnected() const { #if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP)