when using InverseGroup for solo, do not collect group members and pass them to a...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 26 Jan 2016 03:08:23 +0000 (22:08 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 26 Jan 2016 03:08:23 +0000 (22:08 -0500)
gtk2_ardour/route_ui.cc

index 6935afc5478bbe58517129c9bc050e4e2972fbc0..a1b37e85b8559520b67455e93aa9c5e56fbd3b5e 100644 (file)
@@ -610,19 +610,29 @@ RouteUI::solo_press(GdkEventButton* ev)
                                boost::shared_ptr<RouteList> rl;
 
                                if (ev->button == 1) {
-                                       if (ARDOUR::Profile->get_mixbus() && _route->route_group()) {
 
-                                               rl = _route->route_group()->route_list();
+                                       /* Primary-button1 inverts the implication of
+                                          the group being active. If the group is
+                                          active (for solo), then this modifier means
+                                          "do not apply to solo". If the group is
+                                          inactive (for mute), then this modifier
+                                          means "apply to route". This is all
+                                          accomplished by passing just the actual
+                                          route, along with the InverseGroup group
+                                          control disposition.
 
-                                               if (_solo_release) {
-                                                       _solo_release->routes = rl;
-                                               }
-                                       } else {
-                                               rl.reset (new RouteList);
-                                               rl->push_back (_route);
+                                          NOTE: Primary-button2 is MIDI learn.
+                                       */
+
+                                       rl.reset (new RouteList);
+                                       rl->push_back (_route);
+
+                                       if (_solo_release) {
+                                               _solo_release->routes = rl;
                                        }
 
                                        DisplaySuspender ds;
+
                                        if (Config->get_solo_control_is_listen_control()) {
                                                _session->set_listen (rl, !_route->listening_via_monitor(),  Session::rt_cleanup, Controllable::InverseGroup);
                                        } else {