summaryrefslogtreecommitdiff
path: root/libs/ardour/transport_fsm.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-12-08 17:00:08 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-12-08 17:01:17 -0700
commit2543a60f8871b462eba1ff249630110f2fbb6c63 (patch)
tree6d97cf5a31ff967116bd7bc51e7d41d7dae720a8 /libs/ardour/transport_fsm.cc
parentcc8c139a57802565c8a63da4a61e3671cbd43dae (diff)
correct logic errors related to roll-after-locate in TransportFSM
This might have broken some other subtle behavior, but testing hasn't shown it thus far
Diffstat (limited to 'libs/ardour/transport_fsm.cc')
-rw-r--r--libs/ardour/transport_fsm.cc13
1 files changed, 4 insertions, 9 deletions
diff --git a/libs/ardour/transport_fsm.cc b/libs/ardour/transport_fsm.cc
index 6b562caaae..537c825fb1 100644
--- a/libs/ardour/transport_fsm.cc
+++ b/libs/ardour/transport_fsm.cc
@@ -378,11 +378,7 @@ TransportFSM::stop_playback ()
void
TransportFSM::set_roll_after (bool with_roll) const
{
- if (with_roll == true) {
- current_roll_after_locate_status = true;
- } else if (with_roll == false) {
- current_roll_after_locate_status = false;
- }
+ current_roll_after_locate_status = with_roll;
}
void
@@ -404,7 +400,7 @@ TransportFSM::start_locate_while_stopped (Event const & l) const
assert (l.type == Locate);
DEBUG_TRACE (DEBUG::TFSMEvents, "start_locate_while_stopped\n");
- set_roll_after (l.with_roll);
+ set_roll_after (l.with_roll || api->should_roll_after_locate());
api->locate (l.target, current_roll_after_locate_status.get(), l.with_flush, l.for_loop_end, l.force);
}
@@ -470,6 +466,7 @@ TransportFSM::should_roll_after_locate () const
if (current_roll_after_locate_status) {
roll = current_roll_after_locate_status.get();
+ current_roll_after_locate_status = boost::none; // used it
} else {
roll = api->should_roll_after_locate ();
}
@@ -483,9 +480,7 @@ TransportFSM::roll_after_locate () const
{
DEBUG_TRACE (DEBUG::TFSMEvents, string_compose ("rolling after locate, was for_loop ? %1\n", _last_locate.for_loop_end));
current_roll_after_locate_status = boost::none;
- if (!_last_locate.for_loop_end) {
- api->start_transport ();
- }
+ api->start_transport ();
}
void