From cfa1aff1bf303b8b652f655cc5488fe5cab83460 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sun, 10 Jan 2021 23:30:36 +0100 Subject: [PATCH] Add stubs for IAutomationState --- src/common/serialization/vst3/plugin-proxy.cpp | 6 ++++++ src/common/serialization/vst3/plugin-proxy.h | 4 ++++ src/common/serialization/vst3/plugin/automation-state.h | 2 +- src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 7 +++++++ src/plugin/bridges/vst3-impls/plugin-proxy.h | 3 +++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index 2a4e292d..9d335c91 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -24,6 +24,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( : instance_id(instance_id), audio_presentation_latency_args(object), audio_processor_args(object), + automation_state_args(object), component_args(object), connection_point_args(object), edit_controller_args(object), @@ -42,6 +43,7 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) : YaAudioPresentationLatency( std::move(args.audio_presentation_latency_args)), YaAudioProcessor(std::move(args.audio_processor_args)), + YaAutomationState(std::move(args.automation_state_args)), YaComponent(std::move(args.component_args)), YaConnectionPoint(std::move(args.connection_point_args)), YaEditController(std::move(args.edit_controller_args)), @@ -98,6 +100,10 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IAudioProcessor::iid, Steinberg::Vst::IAudioProcessor) } + if (YaAutomationState::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IAutomationState::iid, + Steinberg::Vst::IAutomationState) + } if (YaComponent::supported()) { QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IComponent::iid, Steinberg::Vst::IComponent) diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 73104233..c3ca28bd 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -21,6 +21,7 @@ #include "../common.h" #include "plugin/audio-presentation-latency.h" #include "plugin/audio-processor.h" +#include "plugin/automation-state.h" #include "plugin/component.h" #include "plugin/connection-point.h" #include "plugin/edit-controller-2.h" @@ -63,6 +64,7 @@ */ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaAudioProcessor, + public YaAutomationState, public YaComponent, public YaConnectionPoint, public YaEditController, @@ -97,6 +99,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, YaAudioPresentationLatency::ConstructArgs audio_presentation_latency_args; YaAudioProcessor::ConstructArgs audio_processor_args; + YaAutomationState::ConstructArgs automation_state_args; YaComponent::ConstructArgs component_args; YaConnectionPoint::ConstructArgs connection_point_args; YaEditController::ConstructArgs edit_controller_args; @@ -119,6 +122,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.value8b(instance_id); s.object(audio_presentation_latency_args); s.object(audio_processor_args); + s.object(automation_state_args); s.object(component_args); s.object(connection_point_args); s.object(edit_controller_args); diff --git a/src/common/serialization/vst3/plugin/automation-state.h b/src/common/serialization/vst3/plugin/automation-state.h index fd4d15ed..c19db200 100644 --- a/src/common/serialization/vst3/plugin/automation-state.h +++ b/src/common/serialization/vst3/plugin/automation-state.h @@ -64,7 +64,7 @@ class YaAutomationState : public Steinberg::Vst::IAutomationState { inline bool supported() const { return arguments.supported; } - virtual tresult PLUGIN_API setAutomationState(int32 state) = 0; + virtual tresult PLUGIN_API setAutomationState(int32 state) override = 0; protected: ConstructArgs arguments; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 2d6ae610..54ca7fb6 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -156,6 +156,13 @@ uint32 PLUGIN_API Vst3PluginProxyImpl::getTailSamples() { YaAudioProcessor::GetTailSamples{.instance_id = instance_id()}); } +tresult PLUGIN_API Vst3PluginProxyImpl::setAutomationState(int32 state) { + // TODO: Implement + bridge.logger.log( + "TODO: Implyement IAutomationState::setAutomationState()"); + return Steinberg::kNotImplemented; +} + tresult PLUGIN_API Vst3PluginProxyImpl::getControllerClassId(Steinberg::TUID classId) { if (classId) { diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index d30512b3..1ac819c5 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -78,6 +78,9 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { tresult PLUGIN_API process(Steinberg::Vst::ProcessData& data) override; uint32 PLUGIN_API getTailSamples() override; + // From `IAutomationState` + tresult PLUGIN_API setAutomationState(int32 state) override; + // From `IComponent` tresult PLUGIN_API getControllerClassId(Steinberg::TUID classId) override; tresult PLUGIN_API setIoMode(Steinberg::Vst::IoMode mode) override;