From 60872a8504cccc0d7e6c2485af8c0362577f5723 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 14 Dec 2011 17:08:57 +0000 Subject: 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 --- libs/ardour/delivery.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'libs/ardour/delivery.cc') 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, 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; } -- cgit v1.2.3