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.
This commit is contained in:
Robbert van der Helm
2020-12-18 14:20:28 +01:00
parent cfa4849467
commit 74f21f12a5
3 changed files with 39 additions and 43 deletions
+1 -1
View File
@@ -212,7 +212,7 @@ class Vst3PluginProxy : public YaAudioProcessor,
} }
}; };
protected: private:
ConstructArgs arguments; ConstructArgs arguments;
}; };
+38 -40
View File
@@ -24,8 +24,8 @@ Vst3PluginProxyImpl::Vst3PluginProxyImpl(Vst3PluginBridge& bridge,
Vst3PluginProxyImpl::~Vst3PluginProxyImpl() { Vst3PluginProxyImpl::~Vst3PluginProxyImpl() {
bridge.send_message( bridge.send_message(
Vst3PluginProxy::Destruct{.instance_id = arguments.instance_id}); Vst3PluginProxy::Destruct{.instance_id = instance_id()});
bridge.unregister_plugin_proxy(arguments.instance_id); bridge.unregister_plugin_proxy(instance_id());
} }
tresult PLUGIN_API tresult PLUGIN_API
@@ -47,7 +47,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setBusArrangements(
int32 numOuts) { int32 numOuts) {
assert(inputs && outputs); assert(inputs && outputs);
return bridge.send_message(YaAudioProcessor::SetBusArrangements{ return bridge.send_message(YaAudioProcessor::SetBusArrangements{
.instance_id = arguments.instance_id, .instance_id = instance_id(),
.inputs = std::vector<Steinberg::Vst::SpeakerArrangement>( .inputs = std::vector<Steinberg::Vst::SpeakerArrangement>(
inputs, &inputs[numIns]), inputs, &inputs[numIns]),
.num_ins = numIns, .num_ins = numIns,
@@ -61,12 +61,11 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getBusArrangement(
Steinberg::Vst::BusDirection dir, Steinberg::Vst::BusDirection dir,
int32 index, int32 index,
Steinberg::Vst::SpeakerArrangement& arr) { Steinberg::Vst::SpeakerArrangement& arr) {
const GetBusArrangementResponse response = const GetBusArrangementResponse response = bridge.send_message(
bridge.send_message(YaAudioProcessor::GetBusArrangement{ YaAudioProcessor::GetBusArrangement{.instance_id = instance_id(),
.instance_id = arguments.instance_id, .dir = dir,
.dir = dir, .index = index,
.index = index, .arr = arr});
.arr = arr});
arr = response.updated_arr; arr = response.updated_arr;
@@ -76,30 +75,30 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getBusArrangement(
tresult PLUGIN_API tresult PLUGIN_API
Vst3PluginProxyImpl::canProcessSampleSize(int32 symbolicSampleSize) { Vst3PluginProxyImpl::canProcessSampleSize(int32 symbolicSampleSize) {
return bridge.send_message(YaAudioProcessor::CanProcessSampleSize{ return bridge.send_message(YaAudioProcessor::CanProcessSampleSize{
.instance_id = arguments.instance_id, .instance_id = instance_id(),
.symbolic_sample_size = symbolicSampleSize}); .symbolic_sample_size = symbolicSampleSize});
} }
uint32 PLUGIN_API Vst3PluginProxyImpl::getLatencySamples() { uint32 PLUGIN_API Vst3PluginProxyImpl::getLatencySamples() {
return bridge.send_message(YaAudioProcessor::GetLatencySamples{ return bridge.send_message(
.instance_id = arguments.instance_id}); YaAudioProcessor::GetLatencySamples{.instance_id = instance_id()});
} }
tresult PLUGIN_API tresult PLUGIN_API
Vst3PluginProxyImpl::setupProcessing(Steinberg::Vst::ProcessSetup& setup) { Vst3PluginProxyImpl::setupProcessing(Steinberg::Vst::ProcessSetup& setup) {
return bridge.send_message(YaAudioProcessor::SetupProcessing{ 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) { tresult PLUGIN_API Vst3PluginProxyImpl::setProcessing(TBool state) {
return bridge.send_message(YaAudioProcessor::SetProcessing{ return bridge.send_message(YaAudioProcessor::SetProcessing{
.instance_id = arguments.instance_id, .state = state}); .instance_id = instance_id(), .state = state});
} }
tresult PLUGIN_API tresult PLUGIN_API
Vst3PluginProxyImpl::process(Steinberg::Vst::ProcessData& data) { Vst3PluginProxyImpl::process(Steinberg::Vst::ProcessData& data) {
ProcessResponse response = bridge.send_message(YaAudioProcessor::Process{ ProcessResponse response = bridge.send_message(
.instance_id = arguments.instance_id, .data = data}); YaAudioProcessor::Process{.instance_id = instance_id(), .data = data});
response.output_data.write_back_outputs(data); response.output_data.write_back_outputs(data);
@@ -108,19 +107,19 @@ Vst3PluginProxyImpl::process(Steinberg::Vst::ProcessData& data) {
uint32 PLUGIN_API Vst3PluginProxyImpl::getTailSamples() { uint32 PLUGIN_API Vst3PluginProxyImpl::getTailSamples() {
return bridge.send_message( 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) { tresult PLUGIN_API Vst3PluginProxyImpl::setIoMode(Steinberg::Vst::IoMode mode) {
return bridge.send_message(YaComponent::SetIoMode{ return bridge.send_message(
.instance_id = arguments.instance_id, .mode = mode}); YaComponent::SetIoMode{.instance_id = instance_id(), .mode = mode});
} }
int32 PLUGIN_API int32 PLUGIN_API
Vst3PluginProxyImpl::getBusCount(Steinberg::Vst::MediaType type, Vst3PluginProxyImpl::getBusCount(Steinberg::Vst::MediaType type,
Steinberg::Vst::BusDirection dir) { Steinberg::Vst::BusDirection dir) {
return bridge.send_message(YaComponent::GetBusCount{ 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 tresult PLUGIN_API
@@ -129,7 +128,7 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type,
int32 index, int32 index,
Steinberg::Vst::BusInfo& bus /*out*/) { Steinberg::Vst::BusInfo& bus /*out*/) {
const GetBusInfoResponse response = bridge.send_message( const GetBusInfoResponse response = bridge.send_message(
YaComponent::GetBusInfo{.instance_id = arguments.instance_id, YaComponent::GetBusInfo{.instance_id = instance_id(),
.type = type, .type = type,
.dir = dir, .dir = dir,
.index = index, .index = index,
@@ -143,7 +142,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo(
Steinberg::Vst::RoutingInfo& inInfo, Steinberg::Vst::RoutingInfo& inInfo,
Steinberg::Vst::RoutingInfo& outInfo /*out*/) { Steinberg::Vst::RoutingInfo& outInfo /*out*/) {
const GetRoutingInfoResponse response = bridge.send_message( const GetRoutingInfoResponse response = bridge.send_message(
YaComponent::GetRoutingInfo{.instance_id = arguments.instance_id, YaComponent::GetRoutingInfo{.instance_id = instance_id(),
.in_info = inInfo, .in_info = inInfo,
.out_info = outInfo}); .out_info = outInfo});
@@ -158,7 +157,7 @@ Vst3PluginProxyImpl::activateBus(Steinberg::Vst::MediaType type,
int32 index, int32 index,
TBool state) { TBool state) {
return bridge.send_message( return bridge.send_message(
YaComponent::ActivateBus{.instance_id = arguments.instance_id, YaComponent::ActivateBus{.instance_id = instance_id(),
.type = type, .type = type,
.dir = dir, .dir = dir,
.index = index, .index = index,
@@ -166,22 +165,22 @@ Vst3PluginProxyImpl::activateBus(Steinberg::Vst::MediaType type,
} }
tresult PLUGIN_API Vst3PluginProxyImpl::setActive(TBool state) { tresult PLUGIN_API Vst3PluginProxyImpl::setActive(TBool state) {
return bridge.send_message(YaComponent::SetActive{ return bridge.send_message(
.instance_id = arguments.instance_id, .state = state}); YaComponent::SetActive{.instance_id = instance_id(), .state = state});
} }
tresult PLUGIN_API Vst3PluginProxyImpl::setState(Steinberg::IBStream* state) { tresult PLUGIN_API Vst3PluginProxyImpl::setState(Steinberg::IBStream* state) {
// Since both interfaces contain this function, this is used for both // Since both interfaces contain this function, this is used for both
// `IComponent::setState()` as well as `IEditController::setState()` // `IComponent::setState()` as well as `IEditController::setState()`
return bridge.send_message(Vst3PluginProxy::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) { tresult PLUGIN_API Vst3PluginProxyImpl::getState(Steinberg::IBStream* state) {
// Since both interfaces contain this function, this is used for both // Since both interfaces contain this function, this is used for both
// `IComponent::getState()` as well as `IEditController::getState()` // `IComponent::getState()` as well as `IEditController::getState()`
const GetStateResponse response = bridge.send_message( 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); 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 // objects in the Wine plugin host directly
if (auto other_proxy = dynamic_cast<Vst3PluginProxy*>(other)) { if (auto other_proxy = dynamic_cast<Vst3PluginProxy*>(other)) {
return bridge.send_message(YaConnectionPoint::Connect{ return bridge.send_message(YaConnectionPoint::Connect{
.instance_id = arguments.instance_id, .instance_id = instance_id(),
.other_instance_id = other_proxy->instance_id()}); .other_instance_id = other_proxy->instance_id()});
} else { } else {
// TODO: Add support for `ConnectionProxy` and similar objects // TODO: Add support for `ConnectionProxy` and similar objects
@@ -221,22 +220,21 @@ Vst3PluginProxyImpl::notify(Steinberg::Vst::IMessage* message) {
tresult PLUGIN_API tresult PLUGIN_API
Vst3PluginProxyImpl::setComponentState(Steinberg::IBStream* state) { Vst3PluginProxyImpl::setComponentState(Steinberg::IBStream* state) {
return bridge.send_message(YaEditController2::SetComponentState{ return bridge.send_message(YaEditController2::SetComponentState{
.instance_id = arguments.instance_id, .state = state}); .instance_id = instance_id(), .state = state});
} }
int32 PLUGIN_API Vst3PluginProxyImpl::getParameterCount() { int32 PLUGIN_API Vst3PluginProxyImpl::getParameterCount() {
return bridge.send_message(YaEditController2::GetParameterCount{ return bridge.send_message(
.instance_id = arguments.instance_id}); YaEditController2::GetParameterCount{.instance_id = instance_id()});
} }
tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo( tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo(
int32 paramIndex, int32 paramIndex,
Steinberg::Vst::ParameterInfo& info /*out*/) { Steinberg::Vst::ParameterInfo& info /*out*/) {
const GetParameterInfoResponse response = const GetParameterInfoResponse response = bridge.send_message(
bridge.send_message(YaEditController2::GetParameterInfo{ YaEditController2::GetParameterInfo{.instance_id = instance_id(),
.instance_id = arguments.instance_id, .param_index = paramIndex,
.param_index = paramIndex, .info = info});
.info = info});
info = response.updated_info; info = response.updated_info;
@@ -249,7 +247,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getParamStringByValue(
Steinberg::Vst::String128 string /*out*/) { Steinberg::Vst::String128 string /*out*/) {
const GetParamStringByValueResponse response = const GetParamStringByValueResponse response =
bridge.send_message(YaEditController2::GetParamStringByValue{ bridge.send_message(YaEditController2::GetParamStringByValue{
.instance_id = arguments.instance_id, .instance_id = instance_id(),
.id = id, .id = id,
.value_normalized = valueNormalized}); .value_normalized = valueNormalized});
@@ -345,7 +343,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) {
host_application_context_args = std::nullopt; host_application_context_args = std::nullopt;
if (host_application_context) { if (host_application_context) {
host_application_context_args = YaHostApplication::ConstructArgs( host_application_context_args = YaHostApplication::ConstructArgs(
host_application_context, arguments.instance_id); host_application_context, instance_id());
} else { } else {
bridge.logger.log_unknown_interface( bridge.logger.log_unknown_interface(
"In IPluginBase::initialize()", "In IPluginBase::initialize()",
@@ -353,12 +351,12 @@ tresult PLUGIN_API Vst3PluginProxyImpl::initialize(FUnknown* context) {
} }
return bridge.send_message( return bridge.send_message(
YaPluginBase::Initialize{.instance_id = arguments.instance_id, YaPluginBase::Initialize{.instance_id = instance_id(),
.host_application_context_args = .host_application_context_args =
std::move(host_application_context_args)}); std::move(host_application_context_args)});
} }
tresult PLUGIN_API Vst3PluginProxyImpl::terminate() { tresult PLUGIN_API Vst3PluginProxyImpl::terminate() {
return bridge.send_message( return bridge.send_message(
YaPluginBase::Terminate{.instance_id = arguments.instance_id}); YaPluginBase::Terminate{.instance_id = instance_id()});
} }
@@ -39,8 +39,6 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy {
tresult PLUGIN_API queryInterface(const Steinberg::TUID _iid, tresult PLUGIN_API queryInterface(const Steinberg::TUID _iid,
void** obj) override; void** obj) override;
inline size_t instance_id() { return arguments.instance_id; }
// From `IAudioProcessor` // From `IAudioProcessor`
tresult PLUGIN_API tresult PLUGIN_API
setBusArrangements(Steinberg::Vst::SpeakerArrangement* inputs, setBusArrangements(Steinberg::Vst::SpeakerArrangement* inputs,