summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_reader.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-05-12 10:06:36 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-05-12 11:34:37 -0600
commit7138e76d2d86881c5d6b92b63e61802e112b3b97 (patch)
tree1edf34beb6cb5f5bda6d605f548aa73893b54fb2 /libs/ardour/disk_reader.cc
parent6a542fe5fec00cc53ac0b01e804a3fea434ef8db (diff)
new mechanism to refill pre-loop buffer when loop changes (used for xfading loop ends)
Diffstat (limited to 'libs/ardour/disk_reader.cc')
-rw-r--r--libs/ardour/disk_reader.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc
index 69b7a7dad3..29e53df87a 100644
--- a/libs/ardour/disk_reader.cc
+++ b/libs/ardour/disk_reader.cc
@@ -64,6 +64,7 @@ DiskReader::DiskReader (Session& s, string const& str, DiskIOProcessor::Flag f)
, _declick_amp (s.nominal_sample_rate ())
, _declick_offs (0)
, _declick_enabled (false)
+ , last_refill_loop_start (0)
{
file_sample[DataType::AUDIO] = 0;
file_sample[DataType::MIDI] = 0;
@@ -1044,6 +1045,10 @@ DiskReader::audio_read (Sample* sum_buffer,
loop_declick_out.run (sum_buffer, start, start + this_read);
break;
case XFadeLoop:
+ if (last_refill_loop_start != loc->start()) {
+ setup_preloop_buffer ();
+ last_refill_loop_start = loc->start();
+ }
maybe_xfade_loop (sum_buffer, start, start + this_read, rci);
break;
}