From 96e991d08f94a7da04a9bb6fe2eb55968013759d Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 23 Mar 2019 15:52:36 +0100 Subject: [PATCH] Clean out session-global controllables This isn't strictly speaking needed, there are only a handful of users (most notably generic-midi ctrl surface, and Selection) --- libs/ardour/session.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 2c00fbbd80..d6753c50d9 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -680,6 +680,14 @@ Session::destroy () Port::PortDrop (); /* EMIT SIGNAL */ + { + Glib::Threads::Mutex::Lock lm (controllables_lock); + for (Controllables::iterator i = controllables.begin(); i != controllables.end(); ++i) { + (*i)->DropReferences (); /* EMIT SIGNAL */ + } + controllables.clear (); + } + /* clear history so that no references to objects are held any more */ _history.clear (); @@ -864,6 +872,10 @@ Session::destroy () DEBUG_TRACE (DEBUG::Destruction, "Session::destroy() done\n"); +#ifndef NDEBUG + Controllable::dump_registry (); +#endif + BOOST_SHOW_POINTERS (); }