summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_writer.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-01-29 05:35:36 +0100
committerRobin Gareus <robin@gareus.org>2020-01-29 05:35:36 +0100
commitffe7fcd3b0a49158ef1160e38162f7e413c8c1f4 (patch)
treef7e93ca963f6de97a08d9f1b40465e2a4f0ee414 /libs/ardour/disk_writer.cc
parent6bc4f69c5c85a2494dab3936d121833b1dcca15a (diff)
Allow to dis/engage rec-arm while looping
Diffstat (limited to 'libs/ardour/disk_writer.cc')
-rw-r--r--libs/ardour/disk_writer.cc11
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) {