summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-03-06 19:47:34 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-03-06 19:47:34 +0000
commit2085cddab3b1c8155b63c3c48304fffaa72c4e6c (patch)
tree11256bbf645cf6f9034813e660b5e747bc75e89e /libs/ardour/route.cc
parentb6b68881b2c59c216d2195b1cea5e667187d83ed (diff)
the last (?) piece of the internal send/listen/monitor/control outs track/bus architecture puzzle: a send from the post-fader master bus to the control/listen/monitor bus inputs that is silent when something is soloed, but the rest of the time delivers the main mix to the control/listen/monitor bus. Tweaks to follow, surely ...
git-svn-id: svn://localhost/ardour2/branches/3.0@6740 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc18
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index aef23d4894..4a80197dc6 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -2361,7 +2361,20 @@ Route::listen_via (boost::shared_ptr<Route> route, Placement placement, bool /*a
boost::shared_ptr<InternalSend> listener;
try {
- listener.reset (new InternalSend (_session, _mute_master, route, (aux ? Delivery::Aux : Delivery::Listen)));
+
+ if (is_master()) {
+
+ if (route == _session.control_out()) {
+ listener.reset (new InternalSend (_session, _mute_master, route, (aux ? Delivery::Aux : Delivery::MainListen)));
+ } else {
+ listener.reset (new InternalSend (_session, _mute_master, route, (aux ? Delivery::Aux : Delivery::Listen)));
+ }
+
+ } else {
+ listener.reset (new InternalSend (_session, _mute_master, route, (aux ? Delivery::Aux : Delivery::Listen)));
+ if (route == _session.control_out()) {
+ }
+ }
} catch (failed_constructor& err) {
return -1;
@@ -2369,8 +2382,11 @@ Route::listen_via (boost::shared_ptr<Route> route, Placement placement, bool /*a
if (route == _session.control_out()) {
_control_outs = listener;
+ /* send to control/listen/monitor bus is active by default */
+ listener->activate ();
}
+
add_processor (listener, placement);
return 0;