diff --git a/libs/ardour/disk_writer.cc b/libs/ardour/disk_writer.cc index d93f8680bf..d9bf2fac1e 100644 --- a/libs/ardour/disk_writer.cc +++ b/libs/ardour/disk_writer.cc @@ -1497,11 +1497,25 @@ DiskWriter::steal_write_source_name () bool DiskWriter::configure_io (ChanCount in, ChanCount out) { + bool changed = false; + { + boost::shared_ptr c = channels.reader(); + if (in.n_audio() != c->size()) { + changed = true; + } + if ((0 == in.n_midi ()) != (0 == _midi_buf)) { + changed = true; + } + } + + if (!DiskIOProcessor::configure_io (in, out)) { return false; } - reset_write_sources (false, true); + if (record_enabled() || changed) { + reset_write_sources (false, true); + } return true; }