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); }