diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-07-04 12:13:17 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-09-18 11:40:53 -0400 |
commit | 8101d9884f0efce7e3c0b473c213e027820e48f6 (patch) | |
tree | 71a1d6bea92eca8a3ad6faf733ca46ff8651c3eb /libs/ardour/disk_io.cc | |
parent | b0c6273f90780a6cf664a61443fd42c6a16f0171 (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.cc | 8 |
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); } |