diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-06 19:47:34 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-06 19:47:34 +0000 |
commit | 2085cddab3b1c8155b63c3c48304fffaa72c4e6c (patch) | |
tree | 11256bbf645cf6f9034813e660b5e747bc75e89e /libs/ardour/route.cc | |
parent | b6b68881b2c59c216d2195b1cea5e667187d83ed (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.cc | 18 |
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; |