summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-07-25 13:02:37 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit9d355f1390c4090da8195c50bd37e2b781ef87b3 (patch)
treea59c64d173d66f1992c7e71a30fa3a08f515a78d /libs/ardour/track.cc
parent6038ef44f9786b4b981760dcbcfd467ec8faf108 (diff)
don't (re)create disk reader/writer if they already exist
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc17
1 files changed, 10 insertions, 7 deletions
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<Route> (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<Route> (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<Route> (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<Route> (shared_from_this()));
+ }
}
void