diff options
-rw-r--r-- | libs/ardour/route.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 5f98fba1fe..5a0959f8bb 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2826,9 +2826,14 @@ Route::set_processor_state (const XMLNode& node) } { - Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ()); Glib::Threads::RWLock::WriterLock lm (_processor_lock); + /* re-assign _processors w/o process-lock. + * if there's an IO-processor present in _processors but + * not in new_order, it will be deleted and ~IO takes + * a process lock. + */ _processors = new_order; + Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ()); if (must_configure) { configure_processors_unlocked (0, &lm); |