Fix monitoring state, specifically #59

This partially reverts commit 7455b99b45.
and updates the condition for clip-recording.
This commit is contained in:
Robin Gareus 2025-02-25 00:25:28 +01:00
parent 898ac01e25
commit b59c69b34d
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04

View file

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