From 727ac30dd2218f73f4d1b097820ec67f716cf40a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 1 Apr 2017 13:14:17 +0200 Subject: [PATCH] Unregister ports at session close. This fixes issues when re-loading a session without taking the engine down. --- libs/ardour/session.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index f55e95486e..eb8e233993 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -625,7 +625,7 @@ Session::destroy () ControlProtocolManager::instance().drop_protocols (); - /* stop autoconnecting */ + /* stop auto dis/connecting */ auto_connect_thread_terminate (); MIDI::Name::MidiPatchManager::instance().remove_search_path(session_directory().midi_patch_path()); @@ -807,6 +807,14 @@ Session::destroy () } } + { + /* unregister all dropped ports, process pending port deletion. */ + // this may call ARDOUR::Port::drop ... jack_port_unregister () + // jack1 cannot cope with removing ports while processing + Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); + AudioEngine::instance()->clear_pending_port_deletions (); + } + DEBUG_TRACE (DEBUG::Destruction, "Session::destroy() done\n"); BOOST_SHOW_POINTERS ();