1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

VST3 Client: Add host API checks to setBusArrangements and activateBus

This commit is contained in:
reuk 2022-03-02 18:52:27 +00:00
parent 364b7f7316
commit 18300abde9
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C

View file

@ -2338,6 +2338,8 @@ public:
//==============================================================================
tresult PLUGIN_API setActive (TBool state) override
{
active = (state != 0);
if (! state)
{
getPluginInstance().releaseResources();
@ -2904,6 +2906,9 @@ public:
tresult PLUGIN_API activateBus (Vst::MediaType type, Vst::BusDirection dir, Steinberg::int32 index, TBool state) override
{
// The host is misbehaving! The plugin must be deactivated before setting new arrangements.
jassert (! active);
if (type == Vst::kEvent)
{
#if JucePlugin_WantsMidiInput
@ -2979,6 +2984,13 @@ public:
tresult PLUGIN_API setBusArrangements (Vst::SpeakerArrangement* inputs, Steinberg::int32 numIns,
Vst::SpeakerArrangement* outputs, Steinberg::int32 numOuts) override
{
if (active)
{
// The host is misbehaving! The plugin must be deactivated before setting new arrangements.
jassertfalse;
return kResultFalse;
}
auto numInputBuses = pluginInstance->getBusCount (true);
auto numOutputBuses = pluginInstance->getBusCount (false);
@ -3536,6 +3548,8 @@ private:
AudioBuffer<float> emptyBufferFloat;
AudioBuffer<double> emptyBufferDouble;
bool active = false;
#if JucePlugin_WantsMidiInput
std::atomic<bool> isMidiInputBusEnabled { true };
#endif