Properly fix auto-connect so that busses can still have their outputs auto-connected...
authorCarl Hetherington <carl@carlh.net>
Tue, 20 Jul 2010 22:59:10 +0000 (22:59 +0000)
committerCarl Hetherington <carl@carlh.net>
Tue, 20 Jul 2010 22:59:10 +0000 (22:59 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@7455 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/session.h
libs/ardour/session.cc

index aa75cb17e665751b861e44837a1896f6bce32c2e..7f2fbc0a09744a46addcc3a4434d1fe4c97fa0d1 100644 (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 */
 
index b6548ab88a52b11d9443babf91ba08ce07c454a7..7e849d028fe90db606592dede90822a3ea8c9f40 100644 (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);
                        }