summaryrefslogtreecommitdiff
path: root/libs/ardour/vca.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-10-20 02:13:23 +0200
committerRobin Gareus <robin@gareus.org>2017-10-20 02:54:28 +0200
commit5dc54c91c76b02f8de9c5af4641667882a27b254 (patch)
tree81d0706682ba6a45843e26e01b3f78512138fdb9 /libs/ardour/vca.cc
parentb83e011a4084d5d94a67affcd65ec3cbc460f550 (diff)
Prevent recursive VCA assignments
The GUI so far only prevents direct connections VCA 1 > VCA 2 > VCA 1, but does not recurse VCA 1 > VCA 2 > VCA 3 > VCA 1
Diffstat (limited to 'libs/ardour/vca.cc')
-rw-r--r--libs/ardour/vca.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/ardour/vca.cc b/libs/ardour/vca.cc
index 7be103e9e4..b7b95d1271 100644
--- a/libs/ardour/vca.cc
+++ b/libs/ardour/vca.cc
@@ -208,6 +208,17 @@ VCA::slaved_to (boost::shared_ptr<VCA> vca) const
return _gain_control->slaved_to (vca->gain_control());
}
+void
+VCA::assign (boost::shared_ptr<VCA> v)
+{
+ /* prevent recursive assignments */
+ if (assigned_to (_session.vca_manager_ptr (), v)) {
+ warning << _("Master assignment inored to prevent recursion") << endmsg;
+ return;
+ }
+ Slavable::assign (v);
+}
+
SlavableControlList
VCA::slavables () const
{