diff options
-rw-r--r-- | libs/ardour/ardour/disk_io.h | 1 | ||||
-rw-r--r-- | libs/ardour/disk_io.cc | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/libs/ardour/ardour/disk_io.h b/libs/ardour/ardour/disk_io.h index e09f25d767..2224978c36 100644 --- a/libs/ardour/ardour/disk_io.h +++ b/libs/ardour/ardour/disk_io.h @@ -58,6 +58,7 @@ class LIBARDOUR_API DiskIOProcessor : public Processor DiskIOProcessor (Session&, const std::string& name, Flag f); void set_route (boost::shared_ptr<Route>); + void drop_route (); static void set_buffering_parameters (BufferingPreset bp); diff --git a/libs/ardour/disk_io.cc b/libs/ardour/disk_io.cc index 40f97cba0a..26be1e0a0f 100644 --- a/libs/ardour/disk_io.cc +++ b/libs/ardour/disk_io.cc @@ -388,9 +388,19 @@ DiskIOProcessor::ChannelInfo::~ChannelInfo () } void +DiskIOProcessor::drop_route () +{ + _route.reset (); +} + +void DiskIOProcessor::set_route (boost::shared_ptr<Route> r) { _route = r; + + if (_route) { + _route->DropReferences.connect_same_thread (*this, boost::bind (&DiskIOProcessor::drop_route, this)); + } } /** Get the start, end, and length of a location "atomically". |