From b5e0b5b09f41d2529bf4ba37f69602f914828e58 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 28 Jul 2017 20:15:15 +0200 Subject: PortManager::unregister_port() must be called with process lock This fixes "Failed to register port" when re-loading a session. --- libs/surfaces/push2/push2.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'libs/surfaces/push2/push2.cc') diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc index f29ff41d06..d884869048 100644 --- a/libs/surfaces/push2/push2.cc +++ b/libs/surfaces/push2/push2.cc @@ -294,8 +294,11 @@ Push2::ports_release () asp = dynamic_cast (_output_port); asp->drain (10000, 500000); - AudioEngine::instance()->unregister_port (_async_in); - AudioEngine::instance()->unregister_port (_async_out); + { + Glib::Threads::Mutex::Lock em (AudioEngine::instance()->process_lock()); + AudioEngine::instance()->unregister_port (_async_in); + AudioEngine::instance()->unregister_port (_async_out); + } _async_in.reset ((ARDOUR::Port*) 0); _async_out.reset ((ARDOUR::Port*) 0); -- cgit v1.2.3