mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 20:10:13 +02:00
Fix performEdit() deadlock in Ardour/Mixbus
Those DAWs would immediately call `IEditController::performEdit()` with the same parameter change the plugin has just announced, which would result in a deadlock. Hopefully this helps with #100.
This commit is contained in:
@@ -47,10 +47,15 @@ Vst3ComponentHandlerProxyImpl::beginEdit(Steinberg::Vst::ParamID id) {
|
||||
tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::performEdit(
|
||||
Steinberg::Vst::ParamID id,
|
||||
Steinberg::Vst::ParamValue valueNormalized) {
|
||||
return bridge.send_message(YaComponentHandler::PerformEdit{
|
||||
.owner_instance_id = owner_instance_id(),
|
||||
.id = id,
|
||||
.value_normalized = valueNormalized});
|
||||
// HACK: Ardour/Mixbus will in some cases immediately call
|
||||
// `IEditController::setParamNormalized()` after this `performEdit()`,
|
||||
// so we need to be able to receive that
|
||||
// `IEditController::setParamNormalized()` on the same thread.
|
||||
return bridge.send_mutually_recursive_message(
|
||||
YaComponentHandler::PerformEdit{
|
||||
.owner_instance_id = owner_instance_id(),
|
||||
.id = id,
|
||||
.value_normalized = valueNormalized});
|
||||
}
|
||||
|
||||
tresult PLUGIN_API
|
||||
|
||||
Reference in New Issue
Block a user