diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-08 17:00:08 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-08 17:01:17 -0700 |
commit | 2543a60f8871b462eba1ff249630110f2fbb6c63 (patch) | |
tree | 6d97cf5a31ff967116bd7bc51e7d41d7dae720a8 /libs/ardour/transport_fsm.cc | |
parent | cc8c139a57802565c8a63da4a61e3671cbd43dae (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.cc | 13 |
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 |