diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-06 23:54:34 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-06 23:54:34 -0700 |
commit | f04ee50375354117a755cda45059b0ee710de2dc (patch) | |
tree | 3e4727bb32377f3e5bbb819ebc9ea67c4a085560 /libs/ardour/transport_fsm.cc | |
parent | 625b8297ea59232a1d91f9bf2efeb65ca70b9791 (diff) |
do not transition "back" to Rolling by calling start_transport() if a locate was for loop-end
We never stopped the transport, so there's no reason to start it again. Doing so causes alignment problems
because all tracks have their ::run() ranges reinitialized
Diffstat (limited to 'libs/ardour/transport_fsm.cc')
-rw-r--r-- | libs/ardour/transport_fsm.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/ardour/transport_fsm.cc b/libs/ardour/transport_fsm.cc index 8ec572854c..1905fdac86 100644 --- a/libs/ardour/transport_fsm.cc +++ b/libs/ardour/transport_fsm.cc @@ -421,6 +421,7 @@ TransportFSM::locate_for_loop (Event const & l) assert (l.type == Locate); DEBUG_TRACE (DEBUG::TFSMEvents, string_compose ("locate_for_loop, wl = %1\n", l.with_loop)); current_roll_after_locate_status = l.with_roll; + _last_locate = l; api->locate (l.target, l.with_roll, l.with_flush, l.with_loop, l.force); } @@ -484,9 +485,11 @@ TransportFSM::should_roll_after_locate () const void TransportFSM::roll_after_locate () const { - DEBUG_TRACE (DEBUG::TFSMEvents, "rolling after locate\n"); + DEBUG_TRACE (DEBUG::TFSMEvents, string_compose ("rolling after locate, was for_loop ? %1\n", _last_locate.with_loop)); current_roll_after_locate_status = boost::none; - api->start_transport (); + if (!_last_locate.with_loop) { + api->start_transport (); + } } void |