summaryrefslogtreecommitdiff
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
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
-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;
}