From bc2cbfc7ec044692e959d5d1e55f5ea4fc76fe85 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 27 Feb 2020 02:36:16 +0100 Subject: Prevent concurrent loop and punch recording (backend) This also prevents switching between punch-in/out record and looping without transport-stop. --- libs/ardour/ardour/session.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libs/ardour/ardour/session.h') diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 6ab67fbd25..221a5ab6cc 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1694,6 +1694,22 @@ private: void flush_all_inserts (); int micro_locate (samplecnt_t distance); + enum PunchLoopLock { + NoConstraint, + OnlyPunch, + OnlyLoop, + }; + + volatile guint _punch_or_loop; // enum PunchLoopLock + + bool punch_is_possible () const; + bool loop_is_possible () const; + + bool punch_active () const; + void unset_punch (); + bool maybe_allow_only_loop (bool play_loop = false); + bool maybe_allow_only_punch (); + void force_locate (samplepos_t sample, LocateTransportDisposition); void realtime_stop (bool abort, bool clear_state); void realtime_locate (bool); -- cgit v1.2.3