Audacity 3.2.0
ComponentHandler.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file ComponentHandler.h
6
7 @author Vitaly Sverchinsky
8
9 @brief Part of Audacity VST3 module
10
11**********************************************************************/
12
13#pragma once
14
15#include <memory>
16#include <atomic>
17#include <functional>
18#include <pluginterfaces/vst/ivsteditcontroller.h>
19
20namespace Steinberg
21{
22 namespace Vst
23 {
24 class IParameterChanges;
25 }
26}
27
28namespace internal
29{
40 class ComponentHandler : public Steinberg::Vst::IComponentHandler
41 {
42 std::atomic<Steinberg::Vst::IParameterChanges*> mFirst { nullptr };
43 std::atomic<Steinberg::Vst::IParameterChanges*> mSecond { nullptr };
44 std::atomic<Steinberg::Vst::IParameterChanges*> mPendingChanges { nullptr };
45
46 public:
47 using PendingChangesPtr = std::unique_ptr<
48 Steinberg::Vst::IParameterChanges,
49 std::function<void (Steinberg::Vst::IParameterChanges*)>>;
50
52 virtual ~ComponentHandler();
53
54 Steinberg::tresult PLUGIN_API beginEdit(Steinberg::Vst::ParamID id) override;
55
56 Steinberg::tresult PLUGIN_API performEdit(Steinberg::Vst::ParamID id, Steinberg::Vst::ParamValue valueNormalized) override;
57
58 Steinberg::tresult PLUGIN_API endEdit(Steinberg::Vst::ParamID id) override;
59
60 Steinberg::tresult PLUGIN_API restartComponent(Steinberg::int32 flags) override;
61
63
64
65 DECLARE_FUNKNOWN_METHODS
66 };
67}
std::atomic< Steinberg::Vst::IParameterChanges * > mSecond
Steinberg::tresult PLUGIN_API performEdit(Steinberg::Vst::ParamID id, Steinberg::Vst::ParamValue valueNormalized) override
std::atomic< Steinberg::Vst::IParameterChanges * > mPendingChanges
Steinberg::tresult PLUGIN_API beginEdit(Steinberg::Vst::ParamID id) override
Steinberg::tresult PLUGIN_API restartComponent(Steinberg::int32 flags) override
std::unique_ptr< Steinberg::Vst::IParameterChanges, std::function< void(Steinberg::Vst::IParameterChanges *)> > PendingChangesPtr
PendingChangesPtr getPendingChanges()
std::atomic< Steinberg::Vst::IParameterChanges * > mFirst
Steinberg::tresult PLUGIN_API endEdit(Steinberg::Vst::ParamID id) override