From f14604694dfb464b85ece1aa4009b7598ce32ea3 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 20 Jul 2010 22:59:10 +0000 Subject: [PATCH] Properly fix auto-connect so that busses can still have their outputs auto-connected (just not their inputs). git-svn-id: svn://localhost/ardour2/branches/3.0@7455 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/session.h | 3 +-- libs/ardour/session.cc | 12 ++++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index aa75cb17e6..7f2fbc0a09 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1178,8 +1178,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi bool find_route_name (const char* base, uint32_t& id, char* name, size_t name_len); void count_existing_route_channels (ChanCount& in, ChanCount& out); - void auto_connect_route (boost::shared_ptr route, - ChanCount& existing_inputs, ChanCount& existing_outputs); + void auto_connect_route (boost::shared_ptr route, ChanCount& existing_inputs, ChanCount& existing_outputs, bool connect_inputs = true); /* mixer stuff */ diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index b6548ab88a..7e849d028f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1518,9 +1518,9 @@ Session::new_midi_track (TrackMode mode, RouteGroup* route_group, uint32_t how_m return ret; } +/** @param connect_inputs true to connect inputs as well as outputs, false to connect just outputs */ void -Session::auto_connect_route (boost::shared_ptr route, - ChanCount& existing_inputs, ChanCount& existing_outputs) +Session::auto_connect_route (boost::shared_ptr route, ChanCount& existing_inputs, ChanCount& existing_outputs, bool connect_inputs) { /* If both inputs and outputs are auto-connected to physical ports, use the max of input and output offsets to ensure auto-connected @@ -1529,9 +1529,11 @@ Session::auto_connect_route (boost::shared_ptr route, port number). Otherwise just use the lowest input or output offset possible. */ + const bool in_out_physical = (Config->get_input_auto_connect() & AutoConnectPhysical) - && (Config->get_output_auto_connect() & AutoConnectPhysical); + && (Config->get_output_auto_connect() & AutoConnectPhysical) + && connect_inputs; const ChanCount in_offset = in_out_physical ? ChanCount::max(existing_inputs, existing_outputs) @@ -1548,7 +1550,7 @@ Session::auto_connect_route (boost::shared_ptr route, _engine.get_physical_outputs (*t, physoutputs); _engine.get_physical_inputs (*t, physinputs); - if (!physinputs.empty()) { + if (!physinputs.empty() && connect_inputs) { uint32_t nphysical_in = physinputs.size(); for (uint32_t i = 0; i < route->n_inputs().get(*t) && i < nphysical_in; ++i) { string port; @@ -1756,6 +1758,8 @@ Session::new_audio_route (bool aux, int input_channels, int output_channels, Rou goto failure; } + auto_connect_route (bus, existing_inputs, existing_outputs, false); + if (route_group) { route_group->add (bus); }