Remove delay when engaging record while rolling
This commit is contained in:
parent
9242bc55a5
commit
6d6db90b60
@ -1940,22 +1940,37 @@ Session::maybe_enable_record (bool rt_context)
|
|||||||
|
|
||||||
g_atomic_int_set (&_record_status, Enabled);
|
g_atomic_int_set (&_record_status, Enabled);
|
||||||
|
|
||||||
/* This function is currently called from somewhere other than an RT thread.
|
// TODO make configurable, perhaps capture-buffer-seconds dependnet?
|
||||||
* (except maybe lua scripts, which can use rt_context = true)
|
bool quick_start = true;
|
||||||
* This save_state() call therefore doesn't impact anything. Doing it here
|
|
||||||
* means that we save pending state of which sources the next record will use,
|
/* Save pending state of which sources the next record will use,
|
||||||
* which gives us some chance of recovering from a crash during the record.
|
* which gives us some chance of recovering from a crash during the record.
|
||||||
*/
|
*/
|
||||||
|
if (!rt_context && (!quick_start || _transport_speed == 0)) {
|
||||||
if (!rt_context) {
|
|
||||||
save_state ("", true);
|
save_state ("", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_transport_speed) {
|
if (_transport_speed != 0) {
|
||||||
maybe_allow_only_punch ();
|
maybe_allow_only_punch ();
|
||||||
if (!config.get_punch_in()) {
|
if (!config.get_punch_in()) {
|
||||||
enable_record ();
|
enable_record ();
|
||||||
}
|
}
|
||||||
|
/* When rolling, start recording immediately.
|
||||||
|
* Do not wait for .pending state save to complete
|
||||||
|
* because that may take some time (up to a second
|
||||||
|
* for huge sessions).
|
||||||
|
*
|
||||||
|
* This is potentially dangerous!! If a crash happens
|
||||||
|
* while recording before the .pending save completed,
|
||||||
|
* the data until then may be lost or overwritten.
|
||||||
|
* (However disk-writer buffers are usually longer,
|
||||||
|
* compared to the time it takes to save a session.
|
||||||
|
* disk I/O may not be a bottleneck either. Except
|
||||||
|
* perhaps plugin-state saves taking a lock.
|
||||||
|
*/
|
||||||
|
if (!rt_context && quick_start) {
|
||||||
|
save_state ("", true);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
send_immediate_mmc (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause));
|
send_immediate_mmc (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause));
|
||||||
RecordStateChanged (); /* EMIT SIGNAL */
|
RecordStateChanged (); /* EMIT SIGNAL */
|
||||||
|
Loading…
Reference in New Issue
Block a user