From 2072310b2bc732ed4514861f3d4e3eb74b57edf3 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Fri, 8 Jan 2021 17:43:43 +0100 Subject: [PATCH] Add stubs for IXmlRepresentationController --- src/common/serialization/vst3/plugin-proxy.cpp | 10 +++++++++- src/common/serialization/vst3/plugin-proxy.h | 7 ++++++- src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 9 +++++++++ src/plugin/bridges/vst3-impls/plugin-proxy.h | 5 +++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index 2ab18c73..2a4e292d 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -35,7 +35,8 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( plugin_base_args(object), program_list_data_args(object), unit_data_args(object), - unit_info_args(object) {} + unit_info_args(object), + xml_representation_controller_args(object) {} Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) : YaAudioPresentationLatency( @@ -55,6 +56,8 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) YaProgramListData(std::move(args.program_list_data_args)), YaUnitData(std::move(args.unit_data_args)), YaUnitInfo(std::move(args.unit_info_args)), + YaXmlRepresentationController( + std::move(args.xml_representation_controller_args)), arguments(std::move(args)){FUNKNOWN_CTOR} Vst3PluginProxy::~Vst3PluginProxy() { @@ -141,6 +144,11 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IUnitInfo::iid, Steinberg::Vst::IUnitInfo) } + if (YaXmlRepresentationController::supported()) { + QUERY_INTERFACE(_iid, obj, + Steinberg::Vst::IXmlRepresentationController::iid, + Steinberg::Vst::IXmlRepresentationController) + } *obj = nullptr; return Steinberg::kNoInterface; diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 78553da9..62460094 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -33,6 +33,7 @@ #include "plugin/program-list-data.h" #include "plugin/unit-data.h" #include "plugin/unit-info.h" +#include "plugin/xml-representation-controller.h" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wnon-virtual-dtor" @@ -73,7 +74,8 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaPluginBase, public YaProgramListData, public YaUnitData, - public YaUnitInfo { + public YaUnitInfo, + public YaXmlRepresentationController { public: /** * These are the arguments for constructing a `Vst3PluginProxyImpl`. @@ -109,6 +111,8 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, YaProgramListData::ConstructArgs program_list_data_args; YaUnitData::ConstructArgs unit_data_args; YaUnitInfo::ConstructArgs unit_info_args; + YaXmlRepresentationController::ConstructArgs + xml_representation_controller_args; template void serialize(S& s) { @@ -127,6 +131,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.object(program_list_data_args); s.object(unit_data_args); s.object(unit_info_args); + s.object(xml_representation_controller_args); } }; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index cf4da106..9e99b7a4 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -788,3 +788,12 @@ Vst3PluginProxyImpl::setUnitProgramData(int32 listOrUnitId, .program_index = programIndex, .data = data}); } + +tresult PLUGIN_API Vst3PluginProxyImpl::getXmlRepresentationStream( + Steinberg::Vst::RepresentationInfo& info /*in*/, + Steinberg::IBStream* stream /*out*/) { + // TODO: Implement + bridge.logger.log( + "TODO: IXmlRepresentationController::getXmlRepresentationStream()"); + return Steinberg::kNotImplemented; +} diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index bd0c94b3..d30512b3 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -244,6 +244,11 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { int32 programIndex, Steinberg::IBStream* data) override; + // From `IXmlRepresentationController` + tresult PLUGIN_API + getXmlRepresentationStream(Steinberg::Vst::RepresentationInfo& info /*in*/, + Steinberg::IBStream* stream /*out*/); + /** * The component handler the host passed to us during * `IEditController::setComponentHandler()`. When the plugin makes a