diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-02-19 10:33:20 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-02-19 10:33:33 -0500 |
commit | aea700fbc45edf7dbda635a5106cf6268e54cb29 (patch) | |
tree | 65802f502bccb0c544a518553e945c858c329209 /libs/ardour/session_transport.cc | |
parent | 3a63b785a9d46a36bf3c9176df397d8f5736f524 (diff) |
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.
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index be4cc8112c..5e01f14bdd 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -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 (); + } } } |