From 3c5700163e1f5a790e94ddb25206b46f72bf86ba Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 26 Dec 2020 00:06:32 +0100 Subject: [PATCH] Implement IEditController2::openHelp --- src/common/logging/vst3.cpp | 9 +++++++++ src/common/logging/vst3.h | 1 + src/common/serialization/vst3.h | 1 + .../vst3/plugin/edit-controller-2.h | 19 +++++++++++++++++++ .../bridges/vst3-impls/plugin-proxy.cpp | 5 ++--- src/wine-host/bridges/vst3.cpp | 5 +++++ 6 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/common/logging/vst3.cpp b/src/common/logging/vst3.cpp index 257bff76..17240ff4 100644 --- a/src/common/logging/vst3.cpp +++ b/src/common/logging/vst3.cpp @@ -262,6 +262,15 @@ bool Vst3Logger::log_request(bool is_host_vst, }); } +bool Vst3Logger::log_request(bool is_host_vst, + const YaEditController2::OpenHelp& request) { + return log_request_base(is_host_vst, [&](auto& message) { + message << request.instance_id + << ": IEditController2::openHelp(onlyCheck = " + << (request.only_check ? "true" : "false") << ")"; + }); +} + bool Vst3Logger::log_request( bool is_host_vst, const YaPlugView::IsPlatformTypeSupported& request) { diff --git a/src/common/logging/vst3.h b/src/common/logging/vst3.h index 552b095a..385e5135 100644 --- a/src/common/logging/vst3.h +++ b/src/common/logging/vst3.h @@ -89,6 +89,7 @@ class Vst3Logger { const YaEditController::SetComponentHandler&); bool log_request(bool is_host_vst, const YaEditController::CreateView&); bool log_request(bool is_host_vst, const YaEditController2::SetKnobMode&); + bool log_request(bool is_host_vst, const YaEditController2::OpenHelp&); bool log_request(bool is_host_vst, const YaPlugView::IsPlatformTypeSupported&); bool log_request(bool is_host_vst, const YaPlugView::Attached&); diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index cff9d4dd..8f72ca2d 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -82,6 +82,7 @@ using ControlRequest = std::variant + void serialize(S& s) { + s.value8b(instance_id); + s.value1b(only_check); + } + }; + virtual tresult PLUGIN_API openHelp(TBool onlyCheck) override = 0; virtual tresult PLUGIN_API openAboutBox(TBool onlyCheck) override = 0; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index e2abaa51..a2b773c3 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -399,9 +399,8 @@ Vst3PluginProxyImpl::setKnobMode(Steinberg::Vst::KnobMode mode) { } tresult PLUGIN_API Vst3PluginProxyImpl::openHelp(TBool onlyCheck) { - // TODO: Implement - bridge.logger.log("TODO: IEditController2::openHelp()"); - return Steinberg::kNotImplemented; + return bridge.send_message(YaEditController2::OpenHelp{ + .instance_id = instance_id(), .only_check = onlyCheck}); } tresult PLUGIN_API Vst3PluginProxyImpl::openAboutBox(TBool onlyCheck) { diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index 0e4eb535..8dae153e 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -341,6 +341,11 @@ void Vst3Bridge::run() { return object_instances[request.instance_id] .edit_controller_2->setKnobMode(request.mode); }, + [&](const YaEditController2::OpenHelp& request) + -> YaEditController2::OpenHelp::Response { + return object_instances[request.instance_id] + .edit_controller_2->openHelp(request.only_check); + }, [&](const YaPlugView::IsPlatformTypeSupported& request) -> YaPlugView::IsPlatformTypeSupported::Response { // The host will of course want to pass an X11 window ID for the