Patch from colinf to fix auto-connect of bus outputs (#4758).
authorCarl Hetherington <carl@carlh.net>
Wed, 7 Mar 2012 13:24:20 +0000 (13:24 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 7 Mar 2012 13:24:20 +0000 (13:24 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11615 d708f5d6-7413-0410-9779-e7cbd77b26cf

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

index a0e1b5a0fd16d53f49f932c03d35848e856772c2..001e20ec6f309dd48fc4dd77aa6ce5f614ad6909 100644 (file)
@@ -1224,7 +1224,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
 
        SerializedRCUManager<RouteList>  routes;
 
-       void add_routes (RouteList&, bool auto_connect, bool save);
+       void add_routes (RouteList&, bool input_auto_connect, bool output_auto_connect, bool save);
        uint32_t destructive_index;
 
        boost::shared_ptr<Route> XMLRouteFactory (const XMLNode&, int);
index bafa50a2752c1bcf2570b367d6c9fa7bb3d08f91..42ad0604b8aa9078e5dc3b723a624a619a10c1ac 100644 (file)
@@ -673,7 +673,7 @@ Session::add_monitor_section ()
        }
 
        rl.push_back (r);
-       add_routes (rl, false, false);
+       add_routes (rl, false, false, false);
        
        assert (_monitor_out);
 
@@ -1646,7 +1646,7 @@ Session::new_midi_track (boost::shared_ptr<PluginInfo> instrument, TrackMode mod
 
   failed:
        if (!new_routes.empty()) {
-               add_routes (new_routes, true, true);
+               add_routes (new_routes, true, true, true);
 
                if (instrument) {
                        for (RouteList::iterator r = new_routes.begin(); r != new_routes.end(); ++r) {
@@ -1889,7 +1889,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
 
   failed:
        if (!new_routes.empty()) {
-               add_routes (new_routes, true, true);
+               add_routes (new_routes, true, true, true);
        }
 
        return ret;
@@ -2001,7 +2001,7 @@ Session::new_audio_route (int input_channels, int output_channels, RouteGroup* r
 
   failure:
        if (!ret.empty()) {
-               add_routes (ret, false, true);
+               add_routes (ret, false, true, true); // autoconnect outputs only
        }
 
        return ret;
@@ -2100,7 +2100,7 @@ Session::new_route_from_template (uint32_t how_many, const std::string& template
 
   out:
        if (!ret.empty()) {
-               add_routes (ret, true, true);
+               add_routes (ret, true, true, true);
                IO::enable_connecting ();
        }
 
@@ -2108,7 +2108,7 @@ Session::new_route_from_template (uint32_t how_many, const std::string& template
 }
 
 void
-Session::add_routes (RouteList& new_routes, bool auto_connect, bool save)
+Session::add_routes (RouteList& new_routes, bool input_auto_connect, bool output_auto_connect, bool save)
 {
         ChanCount existing_inputs;
         ChanCount existing_outputs;
@@ -2165,8 +2165,8 @@ Session::add_routes (RouteList& new_routes, bool auto_connect, bool save)
                        }
                }
 
-               if (auto_connect) {
-                       auto_connect_route (r, existing_inputs, existing_outputs, true);
+               if (input_auto_connect || output_auto_connect) {
+                       auto_connect_route (r, existing_inputs, existing_outputs, true, input_auto_connect);
                }
        }
 
index 59d465a3ef5eb7e5604f296cc96894c4005e28ba..013e07ada52bea55522d094bbb1417b149a75115 100644 (file)
@@ -605,7 +605,7 @@ Session::create (const string& session_template, BusProfile* bus_profile)
                }
 
                if (!rl.empty()) {
-                       add_routes (rl, false, false);
+                       add_routes (rl, false, false, false);
                }
 
                 /* this allows the user to override settings with an environment variable.
@@ -1473,7 +1473,7 @@ Session::load_routes (const XMLNode& node, int version)
                new_routes.push_back (route);
        }
 
-       add_routes (new_routes, false, false);
+       add_routes (new_routes, false, false, false);
 
        return 0;
 }