From 37ae5bb30c44327c9acced10baa7b6648c4d8895 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 19 Feb 2015 10:33:20 -0500 Subject: [PATCH] fix transport issues when loop-is-mode is off. 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 | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 50397fbadb..8cb13dce0f 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -833,15 +833,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 (); + } } }