Fix messages between directly connecting objects

iZotope plugins will already send messages when connect() is called on
the first object, so this flag has to be set on both host contexts at
the same time.
This commit is contained in:
Robbert van der Helm
2020-12-24 13:58:32 +01:00
parent a86c37a21d
commit 50b50418f4
3 changed files with 8 additions and 2 deletions
@@ -30,7 +30,7 @@ YaPluginFactoryImpl::createInstance(Steinberg::FIDString cid,
void** obj) {
// Class IDs may be padded with null bytes
constexpr size_t uid_size = sizeof(Steinberg::TUID);
if (!cid || !_iid || strnlen(_iid, uid_size) < uid_size) {
if (!cid || !_iid || !obj || strnlen(_iid, uid_size) < uid_size) {
return Steinberg::kInvalidArgument;
}
@@ -62,6 +62,7 @@ YaPluginFactoryImpl::createInstance(Steinberg::FIDString cid,
bridge.logger.log_unknown_interface(
"In IPluginFactory::createInstance()", uid);
*obj = nullptr;
return Steinberg::kNotImplemented;
}
@@ -62,7 +62,7 @@ Vst3HostContextProxyImpl::createInstance(Steinberg::TUID /*cid*/,
// Class IDs don't have a meaning here, they just mirrored the interface
// from `IPlugFactory::createInstance()`
constexpr size_t uid_size = sizeof(Steinberg::TUID);
if (!_iid || strnlen(_iid, uid_size) < uid_size) {
if (!_iid || !obj || strnlen(_iid, uid_size) < uid_size) {
return Steinberg::kInvalidArgument;
}
@@ -98,6 +98,8 @@ Vst3HostContextProxyImpl::createInstance(Steinberg::TUID /*cid*/,
"IHostApplication::createInstance() for indirectly "
"connected objects has not yet been implemented"
<< std::endl;
*obj = nullptr;
return Steinberg::kNotImplemented;
}
}
+3
View File
@@ -181,6 +181,9 @@ void Vst3Bridge::run() {
object_instances[request.instance_id]
.host_context_proxy->are_objects_directly_connected =
true;
object_instances[request.other_instance_id]
.host_context_proxy->are_objects_directly_connected =
true;
}
return object_instances[request.instance_id]