summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-01-25 22:08:23 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-01-25 22:08:23 -0500
commit5fd07fe3af9e6cb46028f9fb73c48f0616e35d3c (patch)
treebc41a531cd971c189d7af8ee9689f4f87376acb6
parent64e90886b54fe0bed3d128670320f06c3aabb8a9 (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.cc26
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 {