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
This commit is contained in:
Paul Davis
2019-12-08 17:00:08 -07:00
parent cc8c139a57
commit 2543a60f88

View File

@@ -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