Browse Source

VST3 Client: Only call prepareToPlay() from IComponent::setActive()

pull/22/head
attila 4 years ago
parent
commit
3b5d7898ed
1 changed files with 9 additions and 5 deletions
  1. +9
    -5
      modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp

+ 9
- 5
modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp View File

@@ -2306,6 +2306,8 @@ public:
return extractResult (userProvidedInterface, juceProvidedInterface, obj); return extractResult (userProvidedInterface, juceProvidedInterface, obj);
} }
enum class CallPrepareToPlay { no, yes };
//============================================================================== //==============================================================================
tresult PLUGIN_API initialize (FUnknown* hostContext) override tresult PLUGIN_API initialize (FUnknown* hostContext) override
{ {
@@ -2313,7 +2315,7 @@ public:
host.loadFrom (hostContext); host.loadFrom (hostContext);
processContext.sampleRate = processSetup.sampleRate; processContext.sampleRate = processSetup.sampleRate;
preparePlugin (processSetup.sampleRate, (int) processSetup.maxSamplesPerBlock);
preparePlugin (processSetup.sampleRate, (int) processSetup.maxSamplesPerBlock, CallPrepareToPlay::no);
return kResultTrue; return kResultTrue;
} }
@@ -2390,7 +2392,7 @@ public:
? (int) processSetup.maxSamplesPerBlock ? (int) processSetup.maxSamplesPerBlock
: bufferSize; : bufferSize;
preparePlugin (sampleRate, bufferSize);
preparePlugin (sampleRate, bufferSize, CallPrepareToPlay::yes);
} }
return kResultOk; return kResultOk;
@@ -3091,7 +3093,7 @@ public:
: AudioProcessor::singlePrecision); : AudioProcessor::singlePrecision);
getPluginInstance().setNonRealtime (newSetup.processMode == Vst::kOffline); getPluginInstance().setNonRealtime (newSetup.processMode == Vst::kOffline);
preparePlugin (processSetup.sampleRate, processSetup.maxSamplesPerBlock);
preparePlugin (processSetup.sampleRate, processSetup.maxSamplesPerBlock, CallPrepareToPlay::no);
return kResultTrue; return kResultTrue;
} }
@@ -3368,12 +3370,14 @@ private:
| kNeedTransportState; | kNeedTransportState;
} }
void preparePlugin (double sampleRate, int bufferSize)
void preparePlugin (double sampleRate, int bufferSize, CallPrepareToPlay callPrepareToPlay)
{ {
auto& p = getPluginInstance(); auto& p = getPluginInstance();
p.setRateAndBufferSizeDetails (sampleRate, bufferSize); p.setRateAndBufferSizeDetails (sampleRate, bufferSize);
p.prepareToPlay (sampleRate, bufferSize);
if (callPrepareToPlay == CallPrepareToPlay::yes)
p.prepareToPlay (sampleRate, bufferSize);
midiBuffer.ensureSize (2048); midiBuffer.ensureSize (2048);
midiBuffer.clear(); midiBuffer.clear();


Loading…
Cancel
Save