don't bother to re-seek/locate/refill buffers when disk IO processor config changes...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 4 Jul 2017 16:13:17 +0000 (12:13 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Sep 2017 15:40:53 +0000 (11:40 -0400)
libs/ardour/disk_io.cc

index 26be1e0a0f4d1423a046adde2524d69b9b632e6a..64c645bdc35110e3a5eb01322cd0f9831f1ae7c8 100644 (file)
@@ -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);
 }