diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index 7313a2e0..ab899543 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -89,6 +89,8 @@ using ControlRequest = YaEditController2::SetKnobMode, YaEditController2::OpenHelp, YaEditController2::OpenAboutBox, + YaEditControllerHostEditing::BeginEditFromHost, + YaEditControllerHostEditing::EndEditFromHost, YaMidiMapping::GetMidiControllerAssignment, YaNoteExpressionController::GetNoteExpressionCount, YaNoteExpressionController::GetNoteExpressionInfo, diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 2a59f733..8365e617 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -453,16 +453,14 @@ tresult PLUGIN_API Vst3PluginProxyImpl::openAboutBox(TBool onlyCheck) { tresult PLUGIN_API Vst3PluginProxyImpl::beginEditFromHost(Steinberg::Vst::ParamID paramID) { - // TODO: Implement - bridge.logger.log("TODO: IEditControllerHostEditing::beginEditFromhost()"); - return Steinberg::kNotImplemented; + return bridge.send_message(YaEditControllerHostEditing::BeginEditFromHost{ + .instance_id = instance_id(), .param_id = paramID}); } tresult PLUGIN_API Vst3PluginProxyImpl::endEditFromHost(Steinberg::Vst::ParamID paramID) { - // TODO: Implement - bridge.logger.log("TODO: IEditControllerHostEditing::endEditFromhost()"); - return Steinberg::kNotImplemented; + return bridge.send_message(YaEditControllerHostEditing::EndEditFromHost{ + .instance_id = instance_id(), .param_id = paramID}); } tresult PLUGIN_API Vst3PluginProxyImpl::getMidiControllerAssignment( diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index eabfce7e..7e08f538 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -399,6 +399,18 @@ void Vst3Bridge::run() { return object_instances[request.instance_id] .edit_controller_2->openAboutBox(request.only_check); }, + [&](const YaEditControllerHostEditing::BeginEditFromHost& request) + -> YaEditControllerHostEditing::BeginEditFromHost::Response { + return object_instances[request.instance_id] + .edit_controller_host_editing->beginEditFromHost( + request.param_id); + }, + [&](const YaEditControllerHostEditing::EndEditFromHost& request) + -> YaEditControllerHostEditing::EndEditFromHost::Response { + return object_instances[request.instance_id] + .edit_controller_host_editing->endEditFromHost( + request.param_id); + }, [&](const YaMidiMapping::GetMidiControllerAssignment& request) -> YaMidiMapping::GetMidiControllerAssignment::Response { Steinberg::Vst::ParamID id;