diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2020-01-18 17:59:44 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-01-18 19:59:24 -0700 |
commit | d83cd0588278ac23b320694762e8fffd347fb4ad (patch) | |
tree | 254f21182d0bb7a3276eebddfb70c751577c5021 /libs | |
parent | cb825a61bac3476dfc444ea7e952a55591044632 (diff) |
fix broken-ness caused by bad initialization of a StopTransport event in TransportFSM
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/transport_fsm.h | 8 | ||||
-rw-r--r-- | libs/ardour/transport_fsm.cc | 9 |
2 files changed, 9 insertions, 8 deletions
diff --git a/libs/ardour/ardour/transport_fsm.h b/libs/ardour/ardour/transport_fsm.h index 54ceac2304..86133e77c5 100644 --- a/libs/ardour/ardour/transport_fsm.h +++ b/libs/ardour/ardour/transport_fsm.h @@ -64,7 +64,10 @@ struct TransportFSM , target (0) , for_loop_end (false) , force (false) - {} + { + assert (t != StopTransport); + assert (t != Locate); + } Event (EventType t, bool ab, bool cl) : type (t) , abort (ab) @@ -131,7 +134,7 @@ struct TransportFSM void schedule_butler_for_transport_work () const; void start_playback (); - void stop_playback (); + void stop_playback (Event const &); void start_locate_after_declick () const; void locate_for_loop (Event const &); void roll_after_locate () const; @@ -163,7 +166,6 @@ struct TransportFSM bool process_event (Event&, bool was_deferred, bool& deferred); Event _last_locate; - Event _last_stop; TransportAPI* api; typedef boost::intrusive::list<Event> EventList; diff --git a/libs/ardour/transport_fsm.cc b/libs/ardour/transport_fsm.cc index 05d4757e95..8e3ef98cfa 100644 --- a/libs/ardour/transport_fsm.cc +++ b/libs/ardour/transport_fsm.cc @@ -54,8 +54,7 @@ TransportFSM::Event::operator delete (void *ptr, size_t /*size*/) } TransportFSM::TransportFSM (TransportAPI& tapi) - : _last_locate (Locate) - , _last_stop (StopTransport) + : _last_locate (Locate, 0, MustRoll, false, false, false) /* all but first argument don't matter */ , api (&tapi) , processing (0) { @@ -232,7 +231,7 @@ TransportFSM::process_event (Event& ev, bool already_deferred, bool& deferred) switch (_motion_state) { case Rolling: transition (DeclickToStop); - stop_playback (); + stop_playback (ev); break; case Stopped: break; @@ -369,14 +368,14 @@ TransportFSM::start_playback () } void -TransportFSM::stop_playback () +TransportFSM::stop_playback (Event const & s) { DEBUG_TRACE (DEBUG::TFSMEvents, "stop_playback\n"); _last_locate.target = max_samplepos; current_roll_after_locate_status = boost::none; - api->stop_transport (_last_stop.abort, _last_stop.clear_state); + api->stop_transport (s.abort, s.clear_state); } void |