mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-06 04:00:08 +00:00
Fix an issue when hosting Waves plug-ins
This commit is contained in:
parent
a0259ce408
commit
9ecc1e9935
1 changed files with 18 additions and 10 deletions
|
|
@ -2039,18 +2039,18 @@ public:
|
|||
class ParamValueQueueList : public Vst::IParameterChanges
|
||||
{
|
||||
public:
|
||||
ParamValueQueueList() {}
|
||||
ParamValueQueueList() : numQueuesUsed (0) {}
|
||||
virtual ~ParamValueQueueList() {}
|
||||
|
||||
JUCE_DECLARE_VST3_COM_REF_METHODS
|
||||
JUCE_DECLARE_VST3_COM_QUERY_METHODS
|
||||
|
||||
Steinberg::int32 PLUGIN_API getParameterCount() override { return (Steinberg::int32) queues.size(); }
|
||||
Vst::IParamValueQueue* PLUGIN_API getParameterData (Steinberg::int32 index) override { return queues[(int) index]; }
|
||||
Steinberg::int32 PLUGIN_API getParameterCount() override { return numQueuesUsed; }
|
||||
Vst::IParamValueQueue* PLUGIN_API getParameterData (Steinberg::int32 index) override { return isPositiveAndBelow (index, numQueuesUsed) ? queues[(int) index] : nullptr; }
|
||||
|
||||
Vst::IParamValueQueue* PLUGIN_API addParameterData (const Vst::ParamID& id, Steinberg::int32& index) override
|
||||
{
|
||||
for (int i = queues.size(); --i >= 0;)
|
||||
for (int i = numQueuesUsed; --i >= 0;)
|
||||
{
|
||||
if (queues.getUnchecked (i)->getParameterId() == id)
|
||||
{
|
||||
|
|
@ -2059,25 +2059,32 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
index = getParameterCount();
|
||||
return queues.add (new ParamValueQueue (id));
|
||||
index = numQueuesUsed++;
|
||||
ParamValueQueue* valueQueue = (index < queues.size() ? queues[index]
|
||||
: queues.add (new ParamValueQueue));
|
||||
|
||||
valueQueue->clear();
|
||||
valueQueue->setParamID (id);
|
||||
|
||||
return valueQueue;
|
||||
}
|
||||
|
||||
void clearAllQueues() noexcept
|
||||
{
|
||||
for (int i = queues.size(); --i >= 0;)
|
||||
queues.getUnchecked (i)->clear();
|
||||
numQueuesUsed = 0;
|
||||
}
|
||||
|
||||
struct ParamValueQueue : public Vst::IParamValueQueue
|
||||
{
|
||||
ParamValueQueue (Vst::ParamID parameterID) : paramID (parameterID)
|
||||
ParamValueQueue () : paramID (static_cast<Vst::ParamID> (-1))
|
||||
{
|
||||
points.ensureStorageAllocated (1024);
|
||||
}
|
||||
|
||||
virtual ~ParamValueQueue() {}
|
||||
|
||||
void setParamID (Vst::ParamID pID) noexcept { paramID = pID; }
|
||||
|
||||
JUCE_DECLARE_VST3_COM_REF_METHODS
|
||||
JUCE_DECLARE_VST3_COM_QUERY_METHODS
|
||||
|
||||
|
|
@ -2129,7 +2136,7 @@ public:
|
|||
};
|
||||
|
||||
Atomic<int> refCount;
|
||||
const Vst::ParamID paramID;
|
||||
Vst::ParamID paramID;
|
||||
Array<ParamPoint> points;
|
||||
CriticalSection pointLock;
|
||||
|
||||
|
|
@ -2138,6 +2145,7 @@ public:
|
|||
|
||||
Atomic<int> refCount;
|
||||
OwnedArray<ParamValueQueue> queues;
|
||||
int numQueuesUsed;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParamValueQueueList)
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue