Audacity
3.2.0
src
effects
VST3
internal
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
17
void
internal::ParameterQueuePool::QueueCleanup::operator()
(
ParameterValueQueue
* queue)
18
{
19
queue->
dispose
();
20
queue->release();
21
}
22
23
internal::ParameterQueuePool
&
internal::ParameterQueuePool::Instance
()
24
{
25
static
ParameterQueuePool
instance;
26
return
instance;
27
}
28
29
internal::ParameterQueuePool::ParameterValueQueuePtr
internal::ParameterQueuePool::Get
(Steinberg::Vst::ParamID
id
)
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
50
void
internal::ParameterQueuePool::Reset
() noexcept
51
{
52
mPool
.clear();
53
}
safenew
#define safenew
Definition:
MemoryX.h:10
ParameterQueuePool.h
ParameterValueQueue.h
internal::ParameterQueuePool::QueueCleanup
Definition:
ParameterQueuePool.h:35
internal::ParameterQueuePool::QueueCleanup::operator()
void operator()(ParameterValueQueue *queue)
Definition:
ParameterQueuePool.cpp:17
internal::ParameterQueuePool
Definition:
ParameterQueuePool.h:31
internal::ParameterQueuePool::Instance
static ParameterQueuePool & Instance()
Definition:
ParameterQueuePool.cpp:23
internal::ParameterQueuePool::ParameterValueQueuePtr
std::unique_ptr< ParameterValueQueue, QueueCleanup > ParameterValueQueuePtr
Definition:
ParameterQueuePool.h:43
internal::ParameterQueuePool::mPool
std::vector< Steinberg::IPtr< ParameterValueQueue > > mPool
Definition:
ParameterQueuePool.h:32
internal::ParameterQueuePool::Get
ParameterValueQueuePtr Get(Steinberg::Vst::ParamID id)
Definition:
ParameterQueuePool.cpp:29
internal::ParameterQueuePool::Reset
void Reset() noexcept
Definition:
ParameterQueuePool.cpp:50
internal::ParameterValueQueue
Definition:
ParameterValueQueue.h:24
internal::ParameterValueQueue::dispose
void dispose() noexcept
Definition:
ParameterValueQueue.cpp:46
Generated by
1.9.3