special case mixbus routing
authorRobin Gareus <robin@gareus.org>
Fri, 15 Apr 2016 12:52:19 +0000 (14:52 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 15 Apr 2016 12:52:19 +0000 (14:52 +0200)
libs/ardour/route.cc
libs/ardour/session.cc

index a3eacb35884b61ba29233e0a54de8e3f631eb3d7..51fc33a39509cb97bb83c0295d8163876bc637fc 100644 (file)
@@ -2083,10 +2083,7 @@ Route::try_configure_processors_unlocked (ChanCount in, ProcessorStreams* err)
 
                        if (boost::dynamic_pointer_cast<Delivery> (*p)
                                        && boost::dynamic_pointer_cast<Delivery> (*p)->role() == Delivery::Main
-#ifndef MIXBUS
-                                       && _strict_io
-#endif
-                                       ) {
+                                       && ( _strict_io || Profile->get_mixbus ())) {
                                /* with strict I/O the panner + output are forced to
                                 * follow the last processor's output.
                                 *
index a1a6268f615fbe95037bd8fb00b569bb23f5eb48..fec12290932d8e489d0f6d4422b600ee6b4487cd 100644 (file)
@@ -2384,6 +2384,10 @@ Session::new_midi_track (const ChanCount& input, const ChanCount& output, boost:
                                goto failed;
                        }
 
+                       if (Profile->get_mixbus ()) {
+                               track->set_strict_io (true);
+                       }
+
                        track->use_new_diskstream();
 
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
@@ -2479,6 +2483,10 @@ Session::new_midi_route (RouteGroup* route_group, uint32_t how_many, string name
                                goto failure;
                        }
 
+                       if (Profile->get_mixbus ()) {
+                               bus->set_strict_io (true);
+                       }
+
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
                        // boost_debug_shared_ptr_mark_interesting (bus.get(), "Route");
 #endif
@@ -3009,6 +3017,11 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
                                goto failed;
                        }
 
+                       if (Profile->get_mixbus ()) {
+                               track->set_strict_io (true);
+                       }
+
+
                        if (ARDOUR::Profile->get_trx ()) {
                                // TRACKS considers it's not a USE CASE, it's
                                // a piece of behavior of the session model:
@@ -3118,6 +3131,10 @@ Session::new_audio_route (int input_channels, int output_channels, RouteGroup* r
                                goto failure;
                        }
 
+                       if (Profile->get_mixbus ()) {
+                               bus->set_strict_io (true);
+                       }
+
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
                        // boost_debug_shared_ptr_mark_interesting (bus.get(), "Route");
 #endif