Don't offer possible recursive VCA assignments in the GUI
authorRobin Gareus <robin@gareus.org>
Fri, 20 Oct 2017 00:54:06 +0000 (02:54 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 20 Oct 2017 00:54:28 +0000 (02:54 +0200)
gtk2_ardour/control_slave_ui.cc

index 14467a01186434bdbe7d23f80d61a752715ed6bf..0c8ad87d28da3b26eed082cc0d25bb40a5c86be3 100644 (file)
@@ -191,22 +191,17 @@ ControlSlaveUI::vca_button_release (GdkEventButton* ev, uint32_t n)
 
        for (VCAList::iterator v = vcas.begin(); v != vcas.end(); ++v) {
 
-               boost::shared_ptr<GainControl> gcs = stripable->gain_control();
-               boost::shared_ptr<GainControl> gcm = (*v)->gain_control();
-
-               if (gcs == gcm) {
-                       /* asked to slave to self. not ok */
-                       continue;
-               }
-
-               if (gcm->slaved_to (gcs)) {
-                       /* master is already slaved to slave */
+               if (stripable->assigned_to (_session->vca_manager_ptr (), *v)) {
+                       /* master(stripable) is directly or indirectly controlled by slave (v) */
                        continue;
                }
 
                items.push_back (CheckMenuElem ((*v)->name()));
                Gtk::CheckMenuItem* item = dynamic_cast<Gtk::CheckMenuItem*> (&items.back());
 
+               boost::shared_ptr<GainControl> gcs = stripable->gain_control();
+               boost::shared_ptr<GainControl> gcm = (*v)->gain_control();
+
                if (gcs->slaved_to (gcm)) {
                        item->set_active (true);
                        slaved = true;