PortManager::unregister_port() must be called with process lock
[ardour.git] / libs / surfaces / push2 / push2.cc
index f29ff41d0658088039df1f08c4435841a5b78ed7..d884869048b985ae56a584823005c87821672429 100644 (file)
@@ -294,8 +294,11 @@ Push2::ports_release ()
        asp = dynamic_cast<AsyncMIDIPort*> (_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);