diff options
Diffstat (limited to 'libs/ardour/disk_reader.cc')
-rw-r--r-- | libs/ardour/disk_reader.cc | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index ea363061d6..fa8a063407 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -536,7 +536,7 @@ DiskReader::overwrite_existing_audio () { boost::shared_ptr<ChannelList> c = channels.reader(); - if (c->empty ()) { + if (c->empty () || !_playlists[DataType::AUDIO]) { return true; } @@ -1683,3 +1683,32 @@ DiskReader::reload_loop () } } + +bool +DiskReader::can_support_io_configuration (const ChanCount& in, ChanCount& out) +{ + if (!DiskIOProcessor::can_support_io_configuration (in, out)) { + return false; + } + + /* DiskIO might have done this too, but do it again anyway as a + * starting point. + */ + + out == in; + + if (_playlists[DataType::AUDIO]) { + ChannelList::size_type naudio = max (ChannelList::size_type (1), channels.reader()->size()); + if (out.n_audio() < naudio) { + out.set (DataType::AUDIO, naudio); + } + } + + if (_playlists[DataType::MIDI]) { + if (out.n_midi() != 1) { + out.set (DataType::MIDI, 1); + } + } + + return true; +} |