From 5a159abe1fba009fe36589b68487e3051a928121 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 15 Apr 2021 23:09:41 -0600 Subject: [PATCH] new SessionEvents for start/stop transport --- libs/ardour/ardour/session_event.h | 2 ++ libs/ardour/session_process.cc | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index 79acec3bcf..ac54c97bc1 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -63,6 +63,8 @@ public: SetTimecodeTransmission, Skip, SetTransportMaster, + StartRoll, + EndRoll, /* only one of each of these events can be queued at any one time */ diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index ee1dc2e3fe..3b8e092f0f 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -61,6 +61,7 @@ using namespace PBD; using namespace std; #define TFSM_EVENT(evtype) { _transport_fsm->enqueue (new TransportFSM::Event (evtype)); } +#define TFSM_ROLL() { _transport_fsm->enqueue (new TransportFSM::Event (TransportFSM::StartTransport)); } #define TFSM_STOP(abort,clear) { _transport_fsm->enqueue (new TransportFSM::Event (TransportFSM::StopTransport,abort,clear)); } #define TFSM_SPEED(speed,abort,clear_state,as_default) { _transport_fsm->enqueue (new TransportFSM::Event (TransportFSM::SetSpeed,speed,abort,clear_state,as_default)); } #define TFSM_LOCATE(target,ltd,flush,loop,force) { _transport_fsm->enqueue (new TransportFSM::Event (TransportFSM::Locate,target,ltd,flush,loop,force)); } @@ -914,6 +915,14 @@ Session::process_event (SessionEvent* ev) TFSM_SPEED (ev->speed, ev->yes_or_no, ev->second_yes_or_no, ev->third_yes_or_no); break; + case SessionEvent::StartRoll: + TFSM_ROLL (); + break; + + case SessionEvent::EndRoll: + TFSM_STOP (ev->yes_or_no, ev->second_yes_or_no); + break; + case SessionEvent::SetTransportMaster: /* do not allow changing the transport master if we're already using one.