summaryrefslogtreecommitdiff
path: root/libs/ardour/delivery.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-12-14 17:08:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-12-14 17:08:57 +0000
commit60872a8504cccc0d7e6c2485af8c0362577f5723 (patch)
treeb729bcb39d30acb1f836a4a8de989bec7803e0ef /libs/ardour/delivery.cc
parentfe06030f02963cb032d05a95384ddfafb9240f1e (diff)
get Delivery to disconnect from any signals it is connected to relatively early in its destructor, so that it is not possible to call Delivery::cycle_start() and encounter a partially formed Delivery-derived object. may fix a crash that geoff beasley has seen with jack2
git-svn-id: svn://localhost/ardour2/branches/3.0@11004 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/delivery.cc')
-rw-r--r--libs/ardour/delivery.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc
index f9ff3be83e..c7ce380a48 100644
--- a/libs/ardour/delivery.cc
+++ b/libs/ardour/delivery.cc
@@ -103,7 +103,16 @@ Delivery::Delivery (Session& s, boost::shared_ptr<Pannable> pannable, boost::sha
Delivery::~Delivery()
{
- DEBUG_TRACE (DEBUG::Destruction, string_compose ("delivery %1 destructor\n", _name));
+ DEBUG_TRACE (DEBUG::Destruction, string_compose ("delivery %1 destructor\n", _name));
+
+ /* this object should vanish from any signal callback lists
+ that it is on before we get any further. The full qualification
+ of the method name is not necessary, but is here to make it
+ clear that this call is about signals, not data flow connections.
+ */
+
+ ScopedConnectionList::drop_connections ();
+
delete _output_buffers;
}