diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-07 10:30:27 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-07 10:30:38 -0700 |
commit | dec355e83d0f631916a034fec26e64a12ff2bad5 (patch) | |
tree | 2faf4d7d220d531ccf7c8fa89a0cad699038b37f /libs/ardour/session_transport.cc | |
parent | 709a0c8d9bad152216dda80651ea1359e260a22b (diff) |
fix behavior when pressing l to loop (not in loop-is-mode) and the required stop-during locate cancels looping
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index e35a28bf15..13d99a9b11 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -1609,10 +1609,17 @@ Session::set_play_loop (bool yn, bool change_transport_state) merge_event (new SessionEvent (SessionEvent::AutoLoop, SessionEvent::Replace, loc->end(), loc->start(), 0.0f)); - if (!Config->get_loop_is_mode() && !transport_rolling()) { + if (!Config->get_loop_is_mode()) { /* args: positition, roll=true, flush=true, for_loop_end=false, force buffer, refill looping */ - + /* set this so that when/if we stop for locate, + we do not call unset_play_loop(). This is a + crude mechanism. Got a better idea? + */ + loop_changing = true; TFSM_LOCATE (loc->start(), true, true, false, true); + } else if (!transport_rolling()) { + /* loop-is-mode: not rolling, just locate to loop start */ + TFSM_LOCATE (loc->start(), false, true, false, true); } } |