diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index d71134db7e..6ba15929d5 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -764,6 +764,7 @@ public: } double transport_speed() const { return _count_in_samples > 0 ? 0. : _transport_speed; } bool transport_stopped() const; + bool transport_stopped_or_stopping() const; bool transport_rolling() const; bool silent () { return _silent; } diff --git a/libs/ardour/ardour/transport_fsm.h b/libs/ardour/ardour/transport_fsm.h index 26ccb78765..12550d92a7 100644 --- a/libs/ardour/ardour/transport_fsm.h +++ b/libs/ardour/ardour/transport_fsm.h @@ -148,6 +148,7 @@ struct TransportFSM bool locating () const { return _motion_state == WaitingForLocate; } bool rolling () const { return _motion_state == Rolling; } bool stopped () const { return _motion_state == Stopped; } + bool stopping () const { return _motion_state == DeclickToStop; } bool waiting_for_butler() const { return _butler_state == WaitingForButler; } bool declick_in_progress() const { return _motion_state == DeclickToLocate || _motion_state == DeclickToStop; } diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index b6c5d64503..79ffb927bf 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -2000,6 +2000,12 @@ Session::transport_stopped() const return _transport_fsm->stopped(); } +bool +Session::transport_stopped_or_stopping() const +{ + return _transport_fsm->stopped() || _transport_fsm->stopping(); +} + bool Session::transport_rolling() const {