mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-16 00:13:55 +02:00
Store whether two objects are connected directly
In the host context. So when the plugin wants to create an `IMessage` object to send a message to the other object, we don't have to go through the host.
This commit is contained in:
@@ -97,6 +97,15 @@ class Vst3HostContextProxy : public YaHostApplication {
|
|||||||
return arguments.owner_instance_id;
|
return arguments.owner_instance_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to shortcut calls to
|
||||||
|
* `IHostApplication::createInstance(IMessage::iid, IMessage::iid, &obj)`
|
||||||
|
* when two objects (a processor and a controller instance, for example) are
|
||||||
|
* directly connected. This way we don't have to proxy the message created
|
||||||
|
* by the host, which can save a lot of resoruces.
|
||||||
|
*/
|
||||||
|
std::atomic_bool are_objects_directly_connected = false;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ConstructArgs arguments;
|
ConstructArgs arguments;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -170,9 +170,19 @@ void Vst3Bridge::run() {
|
|||||||
},
|
},
|
||||||
[&](const YaConnectionPoint::Connect& request)
|
[&](const YaConnectionPoint::Connect& request)
|
||||||
-> YaConnectionPoint::Connect::Response {
|
-> YaConnectionPoint::Connect::Response {
|
||||||
// We can directly connect the underlying objects
|
// We can directly connect the underlying objects. We'll mark
|
||||||
|
// that we're using a direct connection on our host context
|
||||||
|
// proxy so that when the plugin wants to create an `IMessage`
|
||||||
|
// object, we can keep everything local and we Don't have to go
|
||||||
|
// through the host.
|
||||||
// TODO: Add support for connecting objects through a proxy
|
// TODO: Add support for connecting objects through a proxy
|
||||||
// object provided by the host
|
// object provided by the host
|
||||||
|
if (object_instances[request.instance_id].host_context_proxy) {
|
||||||
|
object_instances[request.instance_id]
|
||||||
|
.host_context_proxy->are_objects_directly_connected =
|
||||||
|
true;
|
||||||
|
}
|
||||||
|
|
||||||
return object_instances[request.instance_id]
|
return object_instances[request.instance_id]
|
||||||
.connection_point->connect(
|
.connection_point->connect(
|
||||||
object_instances[request.other_instance_id]
|
object_instances[request.other_instance_id]
|
||||||
|
|||||||
Reference in New Issue
Block a user