1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-18 00:54:19 +00:00
This commit is contained in:
jules 2007-10-15 14:51:11 +00:00
parent 0c8fa1898e
commit 78d3a1748a

View file

@ -618,6 +618,27 @@ public:
}
else
{
if (! hasCreatedTempChannels)
{
// do this just once when we start processing..
hasCreatedTempChannels = true;
// if some output channels are disabled, some hosts supply the same buffer
// for multiple channels - this buggers up our method of copying the
// inputs over the outputs, so we need to create unique temp buffers in this case..
for (int i = 0; i < numOut; ++i)
{
for (int j = i; --j >= 0;)
{
if (outputs[j] == outputs[i] && outputs[i] != 0)
{
tempChannels.set (i, juce_malloc (sizeof (float) * blockSize * 2));
break;
}
}
}
}
{
int i;
for (i = 0; i < numOut; ++i)
@ -718,12 +739,6 @@ public:
deleteTempChannels();
// any inputs where the output channel is disabled will need our own internal dummy
// buffer, because we can't rely on the host to supply different buffers for each channel
for (int i = 0; i < JucePlugin_MaxNumOutputChannels; ++i)
if (! isOutputConnected2 (i))
tempChannels.set (i, juce_malloc (sizeof (float) * blockSize * 2));
filter->prepareToPlay (rate, blockSize);
midiEvents.clear();
@ -1338,6 +1353,7 @@ private:
int diffW, diffH;
float** channels;
VoidArray tempChannels; // see note in processReplacing()
bool hasCreatedTempChannels;
void deleteTempChannels()
{
@ -1349,6 +1365,8 @@ private:
if (filter != 0)
tempChannels.insertMultiple (0, 0, filter->getNumInputChannels() + filter->getNumOutputChannels());
hasCreatedTempChannels = false;
}
void ensureOutgoingEventSize (int numEvents)
@ -1384,17 +1402,6 @@ private:
return host;
}
// this is a dupe of the method in AudioEffect, because some SDKs
// don't seem to include it..
bool isOutputConnected2 (VstInt32 output)
{
VstInt32 ret = 0;
if (audioMaster)
ret = (VstInt32) audioMaster (&cEffect, audioMasterPinConnected, output, 1, 0, 0);
return ret ? false : true;
}
#if JUCE_MAC
WindowRef hostWindow;
#elif JUCE_LINUX