summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_reader.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-10-26 15:15:05 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-10-26 15:15:05 -0400
commit33af0b0d3daabbbefdc8c09bf8f19b821b2fc137 (patch)
tree66ba7bf08f10aa35cbf3198c04a9029f43d2f174 /libs/ardour/disk_reader.cc
parentea0807d4aaa5a0d2c1bad8e0106c409d8323df15 (diff)
optimization for track with zero audio channels should not short-circuit MIDI disk reading
Diffstat (limited to 'libs/ardour/disk_reader.cc')
-rw-r--r--libs/ardour/disk_reader.cc15
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) {