diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-25 22:08:23 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-25 22:08:23 -0500 |
commit | 5fd07fe3af9e6cb46028f9fb73c48f0616e35d3c (patch) | |
tree | bc41a531cd971c189d7af8ee9689f4f87376acb6 | |
parent | 64e90886b54fe0bed3d128670320f06c3aabb8a9 (diff) |
when using InverseGroup for solo, do not collect group members and pass them to a session RT event method
-rw-r--r-- | gtk2_ardour/route_ui.cc | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 6935afc547..a1b37e85b8 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -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 { |