13
0

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
This commit is contained in:
Carl Hetherington 2010-07-20 22:59:10 +00:00
parent d8de0f94f1
commit f14604694d
2 changed files with 9 additions and 6 deletions

View File

@ -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> route,
ChanCount& existing_inputs, ChanCount& existing_outputs);
void auto_connect_route (boost::shared_ptr<Route> route, ChanCount& existing_inputs, ChanCount& existing_outputs, bool connect_inputs = true);
/* mixer stuff */

View File

@ -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> route,
ChanCount& existing_inputs, ChanCount& existing_outputs)
Session::auto_connect_route (boost::shared_ptr<Route> 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> 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> 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);
}