From 74f21f12a56e489e4d2ffc33191890fd0e4650db Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Fri, 18 Dec 2020 14:20:28 +0100 Subject: [PATCH] Use a getter for a proxy object's instance ID We also need this to get some random other object's instance ID, so might as well use it everywhere. --- src/common/serialization/vst3/plugin-proxy.h | 2 +- .../bridges/vst3-impls/plugin-proxy.cpp | 78 +++++++++---------- src/plugin/bridges/vst3-impls/plugin-proxy.h | 2 - 3 files changed, 39 insertions(+), 43 deletions(-) diff --git a/src/common/serialization/vst3/plugin-proxy.h b/src/common/serialization/vst3/plugin-proxy.h index 48cd5ccd..cdd1f79b 100644 --- a/src/common/serialization/vst3/plugin-proxy.h +++ b/src/common/serialization/vst3/plugin-proxy.h @@ -212,7 +212,7 @@ class Vst3PluginProxy : public YaAudioProcessor, } }; - protected: + private: ConstructArgs arguments; }; diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 4fa96ff5..1d2a7ea3 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -24,8 +24,8 @@ Vst3PluginProxyImpl::Vst3PluginProxyImpl(Vst3PluginBridge& bridge, Vst3PluginProxyImpl::~Vst3PluginProxyImpl() { bridge.send_message( - Vst3PluginProxy::Destruct{.instance_id = arguments.instance_id}); - bridge.unregister_plugin_proxy(arguments.instance_id); + Vst3PluginProxy::Destruct{.instance_id = instance_id()}); + bridge.unregister_plugin_proxy(instance_id()); } tresult PLUGIN_API @@ -47,7 +47,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setBusArrangements( int32 numOuts) { assert(inputs && outputs); return bridge.send_message(YaAudioProcessor::SetBusArrangements{ - .instance_id = arguments.instance_id, + .instance_id = instance_id(), .inputs = std::vector( inputs, &inputs[numIns]), .num_ins = numIns, @@ -61,12 +61,11 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getBusArrangement( Steinberg::Vst::BusDirection dir, int32 index, Steinberg::Vst::SpeakerArrangement& arr) { - const GetBusArrangementResponse response = - bridge.send_message(YaAudioProcessor::GetBusArrangement{ - .instance_id = arguments.instance_id, - .dir = dir, - .index = index, - .arr = arr}); + const GetBusArrangementResponse response = bridge.send_message( + YaAudioProcessor::GetBusArrangement{.instance_id = instance_id(), + .dir = dir, + .index = index, + .arr = arr}); arr = response.updated_arr; @@ -76,30 +75,30 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getBusArrangement( tresult PLUGIN_API Vst3PluginProxyImpl::canProcessSampleSize(int32 symbolicSampleSize) { return bridge.send_message(YaAudioProcessor::CanProcessSampleSize{ - .instance_id = arguments.instance_id, + .instance_id = instance_id(), .symbolic_sample_size = symbolicSampleSize}); } uint32 PLUGIN_API Vst3PluginProxyImpl::getLatencySamples() { - return bridge.send_message(YaAudioProcessor::GetLatencySamples{ - .instance_id = arguments.instance_id}); + return bridge.send_message( + YaAudioProcessor::GetLatencySamples{.instance_id = instance_id()}); } tresult PLUGIN_API Vst3PluginProxyImpl::setupProcessing(Steinberg::Vst::ProcessSetup& setup) { return bridge.send_message(YaAudioProcessor::SetupProcessing{ - .instance_id = arguments.instance_id, .setup = setup}); + .instance_id = instance_id(), .setup = setup}); } tresult PLUGIN_API Vst3PluginProxyImpl::setProcessing(TBool state) { return bridge.send_message(YaAudioProcessor::SetProcessing{ - .instance_id = arguments.instance_id, .state = state}); + .instance_id = instance_id(), .state = state}); } tresult PLUGIN_API Vst3PluginProxyImpl::process(Steinberg::Vst::ProcessData& data) { - ProcessResponse response = bridge.send_message(YaAudioProcessor::Process{ - .instance_id = arguments.instance_id, .data = data}); + ProcessResponse response = bridge.send_message( + YaAudioProcessor::Process{.instance_id = instance_id(), .data = data}); response.output_data.write_back_outputs(data); @@ -108,19 +107,19 @@ Vst3PluginProxyImpl::process(Steinberg::Vst::ProcessData& data) { uint32 PLUGIN_API Vst3PluginProxyImpl::getTailSamples() { return bridge.send_message( - YaAudioProcessor::GetTailSamples{.instance_id = arguments.instance_id}); + YaAudioProcessor::GetTailSamples{.instance_id = instance_id()}); } tresult PLUGIN_API Vst3PluginProxyImpl::setIoMode(Steinberg::Vst::IoMode mode) { - return bridge.send_message(YaComponent::SetIoMode{ - .instance_id = arguments.instance_id, .mode = mode}); + return bridge.send_message( + YaComponent::SetIoMode{.instance_id = instance_id(), .mode = mode}); } int32 PLUGIN_API Vst3PluginProxyImpl::getBusCount(Steinberg::Vst::MediaType type, Steinberg::Vst::BusDirection dir) { return bridge.send_message(YaComponent::GetBusCount{ - .instance_id = arguments.instance_id, .type = type, .dir = dir}); + .instance_id = instance_id(), .type = type, .dir = dir}); } tresult PLUGIN_API @@ -129,7 +128,7 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type, int32 index, Steinberg::Vst::BusInfo& bus /*out*/) { const GetBusInfoResponse response = bridge.send_message( - YaComponent::GetBusInfo{.instance_id = arguments.instance_id, + YaComponent::GetBusInfo{.instance_id = instance_id(), .type = type, .dir = dir, .index = index, @@ -143,7 +142,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo( Steinberg::Vst::RoutingInfo& inInfo, Steinberg::Vst::RoutingInfo& outInfo /*out*/) { const GetRoutingInfoResponse response = bridge.send_message( - YaComponent::GetRoutingInfo{.instance_id = arguments.instance_id, + YaComponent::GetRoutingInfo{.instance_id = instance_id(), .in_info = inInfo, .out_info = outInfo}); @@ -158,7 +157,7 @@ Vst3PluginProxyImpl::activateBus(Steinberg::Vst::MediaType type, int32 index, TBool state) { return bridge.send_message( - YaComponent::ActivateBus{.instance_id = arguments.instance_id, + YaComponent::ActivateBus{.instance_id = instance_id(), .type = type, .dir = dir, .index = index, @@ -166,22 +165,22 @@ Vst3PluginProxyImpl::activateBus(Steinberg::Vst::MediaType type, } tresult PLUGIN_API Vst3PluginProxyImpl::setActive(TBool state) { - return bridge.send_message(YaComponent::SetActive{ - .instance_id = arguments.instance_id, .state = state}); + return bridge.send_message( + YaComponent::SetActive{.instance_id = instance_id(), .state = state}); } tresult PLUGIN_API Vst3PluginProxyImpl::setState(Steinberg::IBStream* state) { // Since both interfaces contain this function, this is used for both // `IComponent::setState()` as well as `IEditController::setState()` return bridge.send_message(Vst3PluginProxy::SetState{ - .instance_id = arguments.instance_id, .state = state}); + .instance_id = instance_id(), .state = state}); } tresult PLUGIN_API Vst3PluginProxyImpl::getState(Steinberg::IBStream* state) { // Since both interfaces contain this function, this is used for both // `IComponent::getState()` as well as `IEditController::getState()` const GetStateResponse response = bridge.send_message( - Vst3PluginProxy::GetState{.instance_id = arguments.instance_id}); + Vst3PluginProxy::GetState{.instance_id = instance_id()}); assert(response.updated_state.write_back(state) == Steinberg::kResultOk); @@ -194,7 +193,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::connect(IConnectionPoint* other) { // objects in the Wine plugin host directly if (auto other_proxy = dynamic_cast(other)) { return bridge.send_message(YaConnectionPoint::Connect{ - .instance_id = arguments.instance_id, + .instance_id = instance_id(), .other_instance_id = other_proxy->instance_id()}); } else { // TODO: Add support for `ConnectionProxy` and similar objects @@ -221,22 +220,21 @@ Vst3PluginProxyImpl::notify(Steinberg::Vst::IMessage* message) { tresult PLUGIN_API Vst3PluginProxyImpl::setComponentState(Steinberg::IBStream* state) { return bridge.send_message(YaEditController2::SetComponentState{ - .instance_id = arguments.instance_id, .state = state}); + .instance_id = instance_id(), .state = state}); } int32 PLUGIN_API Vst3PluginProxyImpl::getParameterCount() { - return bridge.send_message(YaEditController2::GetParameterCount{ - .instance_id = arguments.instance_id}); + return bridge.send_message( + YaEditController2::GetParameterCount{.instance_id = instance_id()}); } tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo( int32 paramIndex, Steinberg::Vst::ParameterInfo& info /*out*/) { - const GetParameterInfoResponse response = - bridge.send_message(YaEditController2::GetParameterInfo{ - .instance_id = arguments.instance_id, - .param_index = paramIndex, - .info = info}); + const GetParameterInfoResponse response = bridge.send_message( + YaEditController2::GetParameterInfo{.instance_id = instance_id(), + .param_index = paramIndex, + .info = info}); info = response.updated_info; @@ -249,7 +247,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getParamStringByValue( Steinberg::Vst::String128 string /*out*/) { const GetParamStringByValueResponse response = bridge.send_message(YaEditController2::GetParamStringByValue{ - .instance_id = arguments.instance_id, + .instance_id = instance_id(), .id = id, .value_normalized = valueNormalized}); @@ -345,7 +343,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) { host_application_context_args = std::nullopt; if (host_application_context) { host_application_context_args = YaHostApplication::ConstructArgs( - host_application_context, arguments.instance_id); + host_application_context, instance_id()); } else { bridge.logger.log_unknown_interface( "In IPluginBase::initialize()", @@ -353,12 +351,12 @@ tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) { } return bridge.send_message( - YaPluginBase::Initialize{.instance_id = arguments.instance_id, + YaPluginBase::Initialize{.instance_id = instance_id(), .host_application_context_args = std::move(host_application_context_args)}); } tresult PLUGIN_API Vst3PluginProxyImpl::terminate() { return bridge.send_message( - YaPluginBase::Terminate{.instance_id = arguments.instance_id}); + YaPluginBase::Terminate{.instance_id = instance_id()}); } diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.h b/src/plugin/bridges/vst3-impls/plugin-proxy.h index 7d6bbafa..eb47f462 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.h +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.h @@ -39,8 +39,6 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy { tresult PLUGIN_API queryInterface(const Steinberg::TUID _iid, void** obj) override; - inline size_t instance_id() { return arguments.instance_id; } - // From `IAudioProcessor` tresult PLUGIN_API setBusArrangements(Steinberg::Vst::SpeakerArrangement* inputs,