summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
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;