summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-02-19 10:33:20 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-02-19 10:33:33 -0500
commitaea700fbc45edf7dbda635a5106cf6268e54cb29 (patch)
tree65802f502bccb0c544a518553e945c858c329209 /libs/ardour/session_transport.cc
parent3a63b785a9d46a36bf3c9176df397d8f5736f524 (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.cc21
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 ();
+ }
}
}