From b59c69b34da0f5c1afb2145744557bcd524a72b7 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 25 Feb 2025 00:25:28 +0100 Subject: [PATCH] Fix monitoring state, specifically #59 This partially reverts commit 7455b99b45fc06cf836655fb225f6592bf1fc9d6. and updates the condition for clip-recording. --- libs/ardour/route.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 195bdf9c2a..3c0592ea50 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -6188,7 +6188,7 @@ Route::monitoring_state () const bool const roll = _session.transport_state_rolling (); bool const auto_input = _session.config.get_auto_input (); - bool const clip_rec = _triggerbox && _triggerbox->record_enabled(); + bool const clip_rec = _triggerbox && _triggerbox->record_enabled() == Recording && !_session.get_record_enabled (); bool const track_rec = _disk_writer->record_enabled (); bool session_rec; @@ -6220,12 +6220,20 @@ Route::monitoring_state () const if (track_rec || clip_rec) { - if (!clip_rec && (!session_rec && roll && auto_input)) { + /* either record to the timeline or into a clip */ + assert (track_rec != clip_rec); + + if (clip_rec) { + /* actively recording into a slot */ + return get_input_monitoring_state (true, auto_input_does_talkback) & auto_monitor_mask; + } + + if (!session_rec && roll && auto_input) { return auto_monitor_disk | get_input_monitoring_state (false, false); } else { /* recording */ const samplecnt_t prtl = _session.preroll_record_trim_len (); - if (!clip_rec && session_rec && roll && prtl > 0 && _disk_writer->get_captured_samples () < prtl) { + if (session_rec && roll && prtl > 0 && _disk_writer->get_captured_samples () < prtl) { /* CUE monitor during pre-roll */ return auto_monitor_disk | (get_input_monitoring_state (true, false) & auto_monitor_mask); }