VST3: only expose Mixbus sends via PSL extensions
This commit is contained in:
parent
4b3b13457e
commit
c5618f01d6
@ -2453,18 +2453,25 @@ lookup_ac (SessionObject* o, FIDString id)
|
|||||||
return s->gain_control ();
|
return s->gain_control ();
|
||||||
} else if (0 == strncmp (id, ContextInfo::kSendLevel, strlen (ContextInfo::kSendLevel))) {
|
} else if (0 == strncmp (id, ContextInfo::kSendLevel, strlen (ContextInfo::kSendLevel))) {
|
||||||
#ifdef MIXBUS
|
#ifdef MIXBUS
|
||||||
/* This calls Route::nth_send(), which takes the _processor_lock.
|
/* Only use mixbus sends, which are identified by providing a
|
||||||
* which we may already hold during initialzation
|
* send_enable_controllable().
|
||||||
* (set_owner is called with process and processor locks held).
|
|
||||||
*
|
*
|
||||||
* NB "console 1" asks for 3 sends, even when we return
|
* The main reason is that the number of Mixbus sends
|
||||||
* kSendCount == 0.
|
* per route is fixed, but this also works around a crash:
|
||||||
*
|
*
|
||||||
* In Mixbus it's fine, since Mixbus send lookup
|
* For Ardour sends, send_level_controllable() calls
|
||||||
* does not take the _processor_lock
|
* Route::nth_send() which takes the _processor_lock.
|
||||||
|
*
|
||||||
|
* However this callback can be triggered initially
|
||||||
|
* Route::add_processors () -> set_owner() ->
|
||||||
|
* setup_psl_info_handler() -> ..notify..
|
||||||
|
* with process and processor locks held, leading to
|
||||||
|
* recurive locks (deadlock, or double unlock crash).
|
||||||
*/
|
*/
|
||||||
int send_id = atoi (id + strlen (ContextInfo::kSendLevel));
|
int send_id = atoi (id + strlen (ContextInfo::kSendLevel));
|
||||||
|
if (s->send_enable_controllable (send_id)) {
|
||||||
return s->send_level_controllable (send_id);
|
return s->send_level_controllable (send_id);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return boost::shared_ptr<AutomationControl> ();
|
return boost::shared_ptr<AutomationControl> ();
|
||||||
|
Loading…
Reference in New Issue
Block a user