diff --git a/src/common/logging/vst3.cpp b/src/common/logging/vst3.cpp index bae28b1e..3fa80143 100644 --- a/src/common/logging/vst3.cpp +++ b/src/common/logging/vst3.cpp @@ -297,11 +297,16 @@ bool Vst3Logger::log_request(bool is_host_vst, }); } +bool Vst3Logger::log_request(bool is_host_vst, + const YaPlugView::GetSize& request) { + return log_request_base(is_host_vst, [&](auto& message) { + message << request.owner_instance_id << ": IPlugView::getSize(size*)"; + }); +} + bool Vst3Logger::log_request(bool is_host_vst, const YaPlugView::OnSize& request) { return log_request_base(is_host_vst, [&](auto& message) { - // This static cast is technically not correct of course but it's - // UTF-16, so everything's allowed message << request.owner_instance_id << ": IPlugView::onSize(newSize = + void serialize(S& s) { + s.value8b(owner_instance_id); + s.value1b(state); + } + }; + virtual tresult PLUGIN_API onFocus(TBool state) override = 0; virtual tresult PLUGIN_API setFrame(Steinberg::IPlugFrame* frame) override = 0; diff --git a/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp b/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp index 7e840fe0..f7fb1fd9 100644 --- a/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp @@ -116,9 +116,8 @@ tresult PLUGIN_API Vst3PlugViewProxyImpl::onSize(Steinberg::ViewRect* newSize) { } tresult PLUGIN_API Vst3PlugViewProxyImpl::onFocus(TBool state) { - // TODO: Implement - bridge.logger.log("TODO: IPlugView::onFocus()"); - return Steinberg::kNotImplemented; + return bridge.send_message(YaPlugView::OnFocus{ + .owner_instance_id = owner_instance_id(), .state = state}); } tresult PLUGIN_API diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index 240e5cc8..7ef4440c 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -387,10 +387,6 @@ void Vst3Bridge::run() { .plug_view->onKeyUp(request.key, request.key_code, request.modifiers); }, - [&](YaPlugView::OnSize& request) -> YaPlugView::OnKeyUp::Response { - return object_instances[request.owner_instance_id] - .plug_view->onSize(&request.new_size); - }, [&](YaPlugView::GetSize& request) -> YaPlugView::GetSize::Response { const tresult result = object_instances[request.owner_instance_id] @@ -399,6 +395,15 @@ void Vst3Bridge::run() { return YaPlugView::GetSizeResponse{ .result = result, .updated_size = request.size}; }, + [&](YaPlugView::OnSize& request) -> YaPlugView::OnSize::Response { + return object_instances[request.owner_instance_id] + .plug_view->onSize(&request.new_size); + }, + [&](const YaPlugView::OnFocus& request) + -> YaPlugView::OnFocus::Response { + return object_instances[request.owner_instance_id] + .plug_view->onFocus(request.state); + }, [&](YaPluginBase::Initialize& request) -> YaPluginBase::Initialize::Response { // If we got passed a host context, we'll create a proxy object