diff options
author | Robin Gareus <robin@gareus.org> | 2020-01-29 05:35:36 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-01-29 05:35:36 +0100 |
commit | ffe7fcd3b0a49158ef1160e38162f7e413c8c1f4 (patch) | |
tree | f7e93ca963f6de97a08d9f1b40465e2a4f0ee414 /libs/ardour/disk_writer.cc | |
parent | 6bc4f69c5c85a2494dab3936d121833b1dcca15a (diff) |
Allow to dis/engage rec-arm while looping
Diffstat (limited to 'libs/ardour/disk_writer.cc')
-rw-r--r-- | libs/ardour/disk_writer.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/ardour/disk_writer.cc b/libs/ardour/disk_writer.cc index cddfe7b09b..aafdcc5dcd 100644 --- a/libs/ardour/disk_writer.cc +++ b/libs/ardour/disk_writer.cc @@ -463,6 +463,17 @@ DiskWriter::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp */ _capture_captured = start_sample - loop_start; _capture_start_sample = loop_start; + if (_capture_captured > 0) { + /* when enabling record while already looping, + * zero fill region back to loop-start. + */ + for (chan = c->begin(), n = 0; chan != c->end(); ++chan, ++n) { + ChannelInfo* chaninfo (*chan); + for (samplecnt_t s = 0; s < _capture_captured; ++s) { + chaninfo->wbuf->write_one (0); // TODO: optimize + } + } + } } if (_midi_write_source) { |