summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_io.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-06-21 12:54:39 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit302d15d2c0c5d34a11c49d888c28cd4dafc2b082 (patch)
treea8bf9ceed16b9457dd273a2756cd2b12d31b5ea9 /libs/ardour/disk_io.cc
parent6827dfe832834873fb3f656d48f3294ba5c127fd (diff)
drop route shared_ptr when Route::GoingAway is emitted
Diffstat (limited to 'libs/ardour/disk_io.cc')
-rw-r--r--libs/ardour/disk_io.cc10
1 files changed, 10 insertions, 0 deletions
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".