diff --git a/src/common/serialization/vst3/plugin-proxy.cpp b/src/common/serialization/vst3/plugin-proxy.cpp index ffe6e7d0..45909099 100644 --- a/src/common/serialization/vst3/plugin-proxy.cpp +++ b/src/common/serialization/vst3/plugin-proxy.cpp @@ -28,6 +28,7 @@ Vst3PluginProxy::ConstructArgs::ConstructArgs( connection_point_args(object), edit_controller_args(object), edit_controller_2_args(object), + edit_controller_host_editing_args(object), midi_mapping_args(object), note_expression_controller_args(object), plugin_base_args(object), @@ -43,6 +44,8 @@ Vst3PluginProxy::Vst3PluginProxy(const ConstructArgs&& args) YaConnectionPoint(std::move(args.connection_point_args)), YaEditController(std::move(args.edit_controller_args)), YaEditController2(std::move(args.edit_controller_2_args)), + YaEditControllerHostEditing( + std::move(args.edit_controller_host_editing_args)), YaMidiMapping(std::move(args.midi_mapping_args)), YaNoteExpressionController( std::move(args.note_expression_controller_args)), @@ -106,6 +109,11 @@ tresult PLUGIN_API Vst3PluginProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IEditController2::iid, Steinberg::Vst::IEditController2) } + if (YaEditControllerHostEditing::supported()) { + QUERY_INTERFACE(_iid, obj, + Steinberg::Vst::IEditControllerHostEditing::iid, + Steinberg::Vst::IEditControllerHostEditing) + } if (YaMidiMapping::supported()) { QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IMidiMapping::iid, Steinberg::Vst::IMidiMapping) diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index a25d8bf1..6c23918f 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -24,6 +24,7 @@ #include "plugin/component.h" #include "plugin/connection-point.h" #include "plugin/edit-controller-2.h" +#include "plugin/edit-controller-host-editing.h" #include "plugin/edit-controller.h" #include "plugin/midi-mapping.h" #include "plugin/note-expression-controller.h" @@ -64,6 +65,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, public YaConnectionPoint, public YaEditController, public YaEditController2, + public YaEditControllerHostEditing, public YaMidiMapping, public YaNoteExpressionController, public YaPluginBase, @@ -95,6 +97,8 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, YaConnectionPoint::ConstructArgs connection_point_args; YaEditController::ConstructArgs edit_controller_args; YaEditController2::ConstructArgs edit_controller_2_args; + YaEditControllerHostEditing::ConstructArgs + edit_controller_host_editing_args; YaMidiMapping::ConstructArgs midi_mapping_args; YaNoteExpressionController::ConstructArgs note_expression_controller_args; @@ -112,6 +116,7 @@ class Vst3PluginProxy : public YaAudioPresentationLatency, s.object(connection_point_args); s.object(edit_controller_args); s.object(edit_controller_2_args); + s.object(edit_controller_host_editing_args); s.object(midi_mapping_args); s.object(note_expression_controller_args); s.object(plugin_base_args); diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 5e3b7d9b..2a59f733 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -451,6 +451,20 @@ tresult PLUGIN_API Vst3PluginProxyImpl::openAboutBox(TBool onlyCheck) { .instance_id = instance_id(), .only_check = onlyCheck}); } +tresult PLUGIN_API +Vst3PluginProxyImpl::beginEditFromHost(Steinberg::Vst::ParamID paramID) { + // TODO: Implement + bridge.logger.log("TODO: IEditControllerHostEditing::beginEditFromhost()"); + return Steinberg::kNotImplemented; +} + +tresult PLUGIN_API +Vst3PluginProxyImpl::endEditFromHost(Steinberg::Vst::ParamID paramID) { + // TODO: Implement + bridge.logger.log("TODO: IEditControllerHostEditing::endEditFromhost()"); + return Steinberg::kNotImplemented; +} + tresult PLUGIN_API Vst3PluginProxyImpl::getMidiControllerAssignment( int32 busIndex, int16 channel, diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index 4298736c..f8c117fe 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -142,6 +142,12 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { tresult PLUGIN_API openHelp(TBool onlyCheck) override; tresult PLUGIN_API openAboutBox(TBool onlyCheck) override; + // From `IEditControllerHostEditing` + tresult PLUGIN_API + beginEditFromHost(Steinberg::Vst::ParamID paramID) override; + tresult PLUGIN_API + endEditFromHost(Steinberg::Vst::ParamID paramID) override; + // From `IMidiMapping` tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex, diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index bee454a1..eabfce7e 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -43,6 +43,7 @@ InstanceInterfaces::InstanceInterfaces( connection_point(object), edit_controller(object), edit_controller_2(object), + edit_controller_host_editing(object), midi_mapping(object), note_expression_controller(object), plugin_base(object), diff --git a/src/wine-host/bridges/vst3.h b/src/wine-host/bridges/vst3.h index 9a6020bc..f32783b0 100644 --- a/src/wine-host/bridges/vst3.h +++ b/src/wine-host/bridges/vst3.h @@ -152,6 +152,8 @@ struct InstanceInterfaces { Steinberg::FUnknownPtr connection_point; Steinberg::FUnknownPtr edit_controller; Steinberg::FUnknownPtr edit_controller_2; + Steinberg::FUnknownPtr + edit_controller_host_editing; Steinberg::FUnknownPtr midi_mapping; Steinberg::FUnknownPtr note_expression_controller;