summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_io.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-07-04 12:13:17 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit8101d9884f0efce7e3c0b473c213e027820e48f6 (patch)
tree71a1d6bea92eca8a3ad6faf733ca46ff8651c3eb /libs/ardour/disk_io.cc
parentb0c6273f90780a6cf664a61443fd42c6a16f0171 (diff)
don't bother to re-seek/locate/refill buffers when disk IO processor config changes unless it actually changed
Diffstat (limited to 'libs/ardour/disk_io.cc')
-rw-r--r--libs/ardour/disk_io.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/ardour/disk_io.cc b/libs/ardour/disk_io.cc
index 26be1e0a0f..64c645bdc3 100644
--- a/libs/ardour/disk_io.cc
+++ b/libs/ardour/disk_io.cc
@@ -151,20 +151,26 @@ DiskIOProcessor::configure_io (ChanCount in, ChanCount out)
boost::shared_ptr<ChannelList> c = writer.get_copy();
uint32_t n_audio = in.n_audio();
+ bool changed = false;
if (n_audio > c->size()) {
add_channel_to (c, n_audio - c->size());
+ changed = true;
} else if (n_audio < c->size()) {
remove_channel_from (c, c->size() - n_audio);
+ changed = true;
}
if (in.n_midi() > 0 && !_midi_buf) {
const size_t size = _session.butler()->midi_diskstream_buffer_size();
_midi_buf = new MidiRingBuffer<framepos_t>(size);
midi_interpolation.add_channel_to (0,0);
+ changed = true;
}
- seek (_session.transport_frame());
+ if (changed) {
+ seek (_session.transport_frame());
+ }
return Processor::configure_io (in, out);
}