diff options
Diffstat (limited to 'libs/ardour/disk_reader.cc')
-rw-r--r-- | libs/ardour/disk_reader.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index 98643f8ebd..dd6c3ee09d 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -251,11 +251,6 @@ DiskReader::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp } } - if (c->empty()) { - /* do nothing */ - return; - } - if ((speed == 0.0) && (ms == MonitoringDisk)) { /* no channels, or stopped. Don't accidentally pass any data * from disk into our outputs (e.g. via interpolation) @@ -263,6 +258,14 @@ DiskReader::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp return; } + BufferSet& scratch_bufs (_session.get_scratch_buffers (bufs.count())); + const bool still_locating = _session.global_locate_pending(); + + if (c->empty()) { + /* do nothing with audio */ + goto midi; + } + if (speed != 1.0f && speed != -1.0f) { interpolation.set_speed (speed); disk_samples_to_consume = interpolation.distance (nframes); @@ -273,8 +276,6 @@ DiskReader::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_samp disk_samples_to_consume = nframes; } - BufferSet& scratch_bufs (_session.get_scratch_buffers (bufs.count())); - const bool still_locating = _session.global_locate_pending(); if (!result_required || ((ms & MonitoringDisk) == 0) || still_locating || _no_disk_output) { |