Bypass connection point proxies when possible

This greatly improves compatibility with VST3 plugins in Ardour and
Mixbus. Most notably the FabFilter plugins would previously freeze when
having the GUI open while duplicating or inserting new instances.
This commit is contained in:
Robbert van der Helm
2021-04-29 15:36:28 +02:00
parent e4177f2856
commit 0f506f75e4
4 changed files with 135 additions and 25 deletions
+9 -3
View File
@@ -291,9 +291,15 @@ void Vst3Bridge::run() {
[&](YaConnectionPoint::Connect& request)
-> YaConnectionPoint::Connect::Response {
// If the host directly connected the underlying objects then we
// can directly connect them as well. Otherwise we'll have to go
// through a connection proxy (to proxy the host's connection
// proxy).
// can directly connect them as well. Some hosts, like Ardour
// and Mixbus, will place a proxy between the two plugins This
// can make things very complicated with FabFilter plugins,
// which constantly communicate over this connection proxy from
// the GUI thread. Because of that, we'll try to bypass the
// connection proxy first, still connecting the objects directly
// on the Wine side. If we cannot do that, then we'll still go
// through the host's connection proxy connection proxy (and
// we'll end up proxying the host's connection proxy).
return std::visit(
overload{
[&](const native_size_t& other_instance_id) -> tresult {