, 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)
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;
bool process_event (Event&, bool was_deferred, bool& deferred);
Event _last_locate;
- Event _last_stop;
TransportAPI* api;
typedef boost::intrusive::list<Event> EventList;
}
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)
{
switch (_motion_state) {
case Rolling:
transition (DeclickToStop);
- stop_playback ();
+ stop_playback (ev);
break;
case Stopped:
break;
}
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