fix transport issues when loop-is-mode is off.
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Feb 2015 15:33:20 +0000 (10:33 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Feb 2015 15:33:33 +0000 (10:33 -0500)
Session::unset_play_loop() needed to be a no-op if play loop was
already false, and this was exacerbated now that it potentially
schedules butler transport work.

libs/ardour/session_transport.cc

index be4cc8112cb538d9a6adb15e7e012d1e56891902..5e01f14bdd5c9301f4b31e7499ef5abc977d0575 100644 (file)
@@ -782,15 +782,18 @@ Session::check_declick_out ()
 void
 Session::unset_play_loop ()
 {
-       play_loop = false;
-       clear_events (SessionEvent::AutoLoop);
-       clear_events (SessionEvent::AutoLoopDeclick);
-       set_track_loop (false);
-
-       if (Config->get_seamless_loop()) {
-               /* likely need to flush track buffers: this will locate us to wherever we are */
-               add_post_transport_work (PostTransportLocate);
-               _butler->schedule_transport_work ();
+       if (play_loop) {
+               play_loop = false;
+               clear_events (SessionEvent::AutoLoop);
+               clear_events (SessionEvent::AutoLoopDeclick);
+               set_track_loop (false);
+               
+       
+               if (Config->get_seamless_loop()) {
+                       /* likely need to flush track buffers: this will locate us to wherever we are */
+                       add_post_transport_work (PostTransportLocate);
+                       _butler->schedule_transport_work ();
+               }
        }
 }