Audacity 3.2.0
ParameterQueuePool.cpp
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file ParameterQueuePool.cpp
6
7 @author Vitaly Sverchinsky
8
9 @brief Part of Audacity VST3 module
10
11**********************************************************************/
12
13#include "ParameterQueuePool.h"
14
15#include "ParameterValueQueue.h"
16
18{
19 queue->dispose();
20 queue->release();
21}
22
24{
25 static ParameterQueuePool instance;
26 return instance;
27}
28
30{
31 Steinberg::IPtr<ParameterValueQueue> queue;
32 for(auto& q : mPool)
33 {
34 if(!q->isInitialized())
35 {
36 queue = q;
37 break;
38 }
39 }
40 if(queue == nullptr)
41 {
42 queue = owned(safenew ParameterValueQueue);
43 mPool.push_back(queue);
44 }
45 queue->initialize(id);
46 queue->addRef();
47 return { queue.get(), QueueCleanup { } };
48}
49
51{
52 mPool.clear();
53}
#define safenew
Definition: MemoryX.h:10
void operator()(ParameterValueQueue *queue)
static ParameterQueuePool & Instance()
std::unique_ptr< ParameterValueQueue, QueueCleanup > ParameterValueQueuePtr
std::vector< Steinberg::IPtr< ParameterValueQueue > > mPool
ParameterValueQueuePtr Get(Steinberg::Vst::ParamID id)