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 */
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
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)
_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;
goto failure;
}
+ auto_connect_route (bus, existing_inputs, existing_outputs, false);
+
if (route_group) {
route_group->add (bus);
}