CUE monitor during record w/preroll

This commit is contained in:
Robin Gareus 2021-07-01 03:12:27 +02:00
parent 5f5a577e08
commit 90a0f0af89
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
4 changed files with 16 additions and 1 deletions

View file

@ -65,6 +65,7 @@ public:
SetTransportMaster,
StartRoll,
EndRoll,
TransportStateChange,
/* only one of each of these events can be queued at any one time */

View file

@ -6284,6 +6284,11 @@ Route::monitoring_state () const
return MonitoringDisk | get_input_monitoring_state (false, false);
} else {
/* recording */
const samplecnt_t prtl = _session.preroll_record_trim_len ();
if (session_rec && roll && prtl > 0 && _disk_writer->get_captured_samples () < prtl) {
/* CUE monitor during pre-roll */
return MonitoringDisk | get_input_monitoring_state (true, false);
}
return get_input_monitoring_state (true, false);
}
@ -6306,4 +6311,3 @@ Route::monitoring_state () const
abort(); /* NOTREACHED */
return MonitoringSilence;
}

View file

@ -979,6 +979,10 @@ Session::process_event (SessionEvent* ev)
overwrite_some_buffers (boost::shared_ptr<Track>(), ev->overwrite);
break;
case SessionEvent::TransportStateChange:
TransportStateChange (); /* EMIT SIGNAL */
break;
case SessionEvent::Audition:
set_audition (ev->region);
// drop reference to region

View file

@ -893,6 +893,12 @@ Session::request_preroll_record_trim (samplepos_t rec_in, samplecnt_t preroll)
maybe_enable_record ();
request_locate (pos, MustRoll);
set_requested_return_sample (rec_in);
if (pos < rec_in) {
/* Notify GUI to update monitor state display */
SessionEvent* ev = new SessionEvent (SessionEvent::TransportStateChange, SessionEvent::Add, rec_in, rec_in, 1.0);
queue_event (ev);
}
}
void