From b5478a8a2b09793fe94c2a8836daec2b8f24f0a5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 11 Dec 2011 16:26:03 +0000 Subject: Clarify stop-at-session-end behaviour; should fix #4033. git-svn-id: svn://localhost/ardour2/branches/3.0@10978 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/session_process.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'libs/ardour/session_process.cc') diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 33c4e5621c..89dd83b9c6 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -1133,11 +1133,23 @@ Session::process_event (SessionEvent* ev) framepos_t Session::compute_stop_limit () const { - bool const punching = (config.get_punch_in () && _locations->auto_punch_location()); - - if (!actively_recording() && !punching && Config->get_stop_at_session_end()) { - return current_end_frame (); + if (!Config->get_stop_at_session_end ()) { + return max_framepos; + } + + bool const punching_in = (config.get_punch_in () && _locations->auto_punch_location()); + bool const punching_out = (config.get_punch_out () && _locations->auto_punch_location()); + + if (actively_recording ()) { + /* permanently recording */ + return max_framepos; + } else if (punching_in && !punching_out) { + /* punching in but never out */ + return max_framepos; + } else if (punching_in && punching_out && _locations->auto_punch_location()->end() > current_end_frame()) { + /* punching in and punching out after session end */ + return max_framepos; } - return max_framepos; + return current_end_frame (); } -- cgit v1.2.3