mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-20 02:13:56 +02:00
Add FIXME for a crazy design issue in VocalSynth 2
They're exchanging pointers between the processor and the controller using messages. And not only that, they're storing the message objects instead of storing the pointers.
This commit is contained in:
@@ -225,6 +225,17 @@ void Vst3Bridge::run() {
|
|||||||
},
|
},
|
||||||
[&](YaConnectionPoint::Notify& request)
|
[&](YaConnectionPoint::Notify& request)
|
||||||
-> YaConnectionPoint::Notify::Response {
|
-> YaConnectionPoint::Notify::Response {
|
||||||
|
// FIXME: This needs to be redesigned. We should only send a
|
||||||
|
// pointer to the `IMessage` instead of copying the
|
||||||
|
// actual message. What ends up happening is that iZotope
|
||||||
|
// VocalSynth 2 exchanges pointers to the processor and
|
||||||
|
// the controller. Then at some point during an
|
||||||
|
// `IAudioProcessor::process()` call after a parameter
|
||||||
|
// changes, it will try to access the pointers stored in
|
||||||
|
// that message. So to be able to support that, the
|
||||||
|
// message object we pass to notify here still has to be
|
||||||
|
// alive at that point. This goes 100% against the design
|
||||||
|
// of VST3, but there's nothing we can do about it.
|
||||||
return object_instances[request.instance_id]
|
return object_instances[request.instance_id]
|
||||||
.connection_point->notify(&request.message);
|
.connection_point->notify(&request.message);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user