From 4e4ed3a6b46845a67eba90333309051bf1a9e672 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Fri, 12 Feb 2021 19:24:04 +0100 Subject: [PATCH] Don't serialize input output info for IComponent::getRoutingInfo Yes, input output info. --- src/common/logging/vst3.cpp | 12 +++--------- .../serialization/vst3/plugin/component.h | 19 ++++++------------- .../bridges/vst3-impls/plugin-proxy.cpp | 11 +++++------ src/wine-host/bridges/vst3.cpp | 7 +++---- 4 files changed, 17 insertions(+), 32 deletions(-) diff --git a/src/common/logging/vst3.cpp b/src/common/logging/vst3.cpp index 71adf0f2..d08849c3 100644 --- a/src/common/logging/vst3.cpp +++ b/src/common/logging/vst3.cpp @@ -1086,9 +1086,7 @@ bool Vst3Logger::log_request(bool is_host_vst, << request.instance_id << ": IComponent::getRoutingInfo(inInfo = , outInfo = )"; + << request.in_info.channel << ">, &outInfo)"; }); } @@ -1804,12 +1802,8 @@ void Vst3Logger::log_response( log_response_base(is_host_vst, [&](auto& message) { message << response.result.string(); if (response.result == Steinberg::kResultOk) { - message << ", "; + message << ", "; } }); } diff --git a/src/common/serialization/vst3/plugin/component.h b/src/common/serialization/vst3/plugin/component.h index 3155e73f..2d2315e9 100644 --- a/src/common/serialization/vst3/plugin/component.h +++ b/src/common/serialization/vst3/plugin/component.h @@ -30,9 +30,6 @@ * part of `Vst3PluginProxy`. Event though `IComponent` inherits from * `IPlguinBase`, we'll implement that separately in `YaPluginBase` because * `IEditController` also inherits from `IPluginBase`. - * - * TODO: Remove the original fields for out parameters in the structs. They're - * really supposed to be empty. */ class YaComponent : public Steinberg::Vst::IComponent { public: @@ -147,7 +144,7 @@ class YaComponent : public Steinberg::Vst::IComponent { /** * The response code and returned bus information for a call to - * `IComponent::getBusInfo(type, dir, index, bus )`. + * `IComponent::getBusInfo(type, dir, index, &bus)`. */ struct GetBusInfoResponse { UniversalTResult result; @@ -162,7 +159,7 @@ class YaComponent : public Steinberg::Vst::IComponent { /** * Message to pass through a call to `IComponent::getBusInfo(type, dir, - * index, bus )` to the Wine plugin host. + * index, &bus)` to the Wine plugin host. */ struct GetBusInfo { using Response = GetBusInfoResponse; @@ -189,24 +186,22 @@ class YaComponent : public Steinberg::Vst::IComponent { /** * The response code and returned routing information for a call to - * `IComponent::getRoutingInfo(in_info, out_info )`. + * `IComponent::getRoutingInfo(in_info, &out_info)`. */ struct GetRoutingInfoResponse { UniversalTResult result; - Steinberg::Vst::RoutingInfo updated_in_info; - Steinberg::Vst::RoutingInfo updated_out_info; + Steinberg::Vst::RoutingInfo out_info; template void serialize(S& s) { s.object(result); - s.object(updated_in_info); - s.object(updated_out_info); + s.object(out_info); } }; /** * Message to pass through a call to `IComponent::getRoutingInfo(in_info, - * out_info )` to the Wine plugin host. + * &out_info)` to the Wine plugin host. */ struct GetRoutingInfo { using Response = GetRoutingInfoResponse; @@ -214,13 +209,11 @@ class YaComponent : public Steinberg::Vst::IComponent { native_size_t instance_id; Steinberg::Vst::RoutingInfo in_info; - Steinberg::Vst::RoutingInfo out_info; template void serialize(S& s) { s.value8b(instance_id); s.object(in_info); - s.object(out_info); } }; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index ccedb8ea..7f210a42 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -307,13 +307,12 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type, tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo( Steinberg::Vst::RoutingInfo& inInfo, Steinberg::Vst::RoutingInfo& outInfo /*out*/) { - const GetRoutingInfoResponse response = bridge.send_audio_processor_message( - YaComponent::GetRoutingInfo{.instance_id = instance_id(), - .in_info = inInfo, - .out_info = outInfo}); + const GetRoutingInfoResponse response = + bridge.send_audio_processor_message(YaComponent::GetRoutingInfo{ + .instance_id = instance_id(), .in_info = inInfo}); + + outInfo = response.out_info; - inInfo = response.updated_in_info; - outInfo = response.updated_out_info; return response.result; } diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index 135eaa15..7b9e9cb8 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -1216,15 +1216,14 @@ size_t Vst3Bridge::register_object_instance( }, [&](YaComponent::GetRoutingInfo& request) -> YaComponent::GetRoutingInfo::Response { + Steinberg::Vst::RoutingInfo out_info{}; const tresult result = object_instances[request.instance_id] .component->getRoutingInfo(request.in_info, - request.out_info); + out_info); return YaComponent::GetRoutingInfoResponse{ - .result = result, - .updated_in_info = request.in_info, - .updated_out_info = request.out_info}; + .result = result, .out_info = std::move(out_info)}; }, [&](const YaComponent::ActivateBus& request) -> YaComponent::ActivateBus::Response {