From: Paul Davis Date: Tue, 25 Jul 2017 17:02:37 +0000 (-0400) Subject: don't (re)create disk reader/writer if they already exist X-Git-Tag: 6.0-pre0~45 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=9d355f1390c4090da8195c50bd37e2b781ef87b3 don't (re)create disk reader/writer if they already exist --- diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 3b0e891b2b..448ac02ec7 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -126,14 +126,17 @@ Track::add_processors_oh_children_of_mine () } else if (_mode == NonLayered){ dflags = DiskIOProcessor::Flag(dflags | DiskIOProcessor::NonLayered); } + if (!_disk_reader) { + _disk_reader.reset (new DiskReader (_session, name(), dflags)); + _disk_reader->set_block_size (_session.get_block_size ()); + _disk_reader->set_route (boost::dynamic_pointer_cast (shared_from_this())); + } - _disk_reader.reset (new DiskReader (_session, name(), dflags)); - _disk_reader->set_block_size (_session.get_block_size ()); - _disk_reader->set_route (boost::dynamic_pointer_cast (shared_from_this())); - - _disk_writer.reset (new DiskWriter (_session, name(), dflags)); - _disk_writer->set_block_size (_session.get_block_size ()); - _disk_writer->set_route (boost::dynamic_pointer_cast (shared_from_this())); + if (!_disk_writer) { + _disk_writer.reset (new DiskWriter (_session, name(), dflags)); + _disk_writer->set_block_size (_session.get_block_size ()); + _disk_writer->set_route (boost::dynamic_pointer_cast (shared_from_this())); + } } void