From 33af0b0d3daabbbefdc8c09bf8f19b821b2fc137 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 26 Oct 2017 15:15:05 -0400 Subject: [PATCH] optimization for track with zero audio channels should not short-circuit MIDI disk reading --- libs/ardour/disk_reader.cc | 15 ++++++++------- 1 file 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) {