diff options
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; |