diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-10-26 15:15:05 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-10-26 15:15:05 -0400 |
commit | 33af0b0d3daabbbefdc8c09bf8f19b821b2fc137 (patch) | |
tree | 66ba7bf08f10aa35cbf3198c04a9029f43d2f174 /libs/ardour/disk_reader.cc | |
parent | ea0807d4aaa5a0d2c1bad8e0106c409d8323df15 (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.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) { |