Do a topological sort of the route list before passing it to
[ardour.git] / libs / ardour / session_transport.cc
index ca6b4da319ba4cbecd4079337ee6e9cb8c21a95c..de295a8e8a39dbc8073e64e6e12252205d9b6f8c 100644 (file)
@@ -40,6 +40,7 @@
 #include "ardour/audioengine.h"
 #include "ardour/auditioner.h"
 #include "ardour/butler.h"
+#include "ardour/click.h"
 #include "ardour/debug.h"
 #include "ardour/location.h"
 #include "ardour/session.h"
@@ -425,6 +426,12 @@ Session::non_realtime_locate ()
                        tr->non_realtime_locate (_transport_frame);
                }
        }
+
+       /* XXX: it would be nice to generate the new clicks here (in the non-RT thread)
+          rather than clearing them so that the RT thread has to spend time constructing
+          them (in Session::click).
+        */
+       clear_clicks ();
 }
 
 
@@ -958,8 +965,8 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state)
                return;
        }
 
-       if (actively_recording() && speed < 0.0) {
-               /* no reverse during recording */
+       if (actively_recording() && speed != 1.0 && speed != 0.0) {
+               /* no varispeed during recording */
                return;
        }