fix locking when switching strict i/o.
authorRobin Gareus <robin@gareus.org>
Thu, 14 Apr 2016 20:13:25 +0000 (22:13 +0200)
committerRobin Gareus <robin@gareus.org>
Thu, 14 Apr 2016 20:13:25 +0000 (22:13 +0200)
try_configure_processors_unlocked() needs process lock

libs/ardour/route.cc

index 1db571385fbd98de2427b63fba3dbb148f013394..a3eacb35884b61ba29233e0a54de8e3f631eb3d7 100644 (file)
@@ -2568,6 +2568,8 @@ Route::customize_plugin_insert (boost::shared_ptr<Processor> proc, uint32_t coun
 bool
 Route::set_strict_io (const bool enable)
 {
+       Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ());
+
        if (_strict_io != enable) {
                _strict_io = enable;
                Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
@@ -2593,10 +2595,9 @@ Route::set_strict_io (const bool enable)
                }
                lm.release ();
 
-               {
-                       Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ());
-                       configure_processors (0);
-               }
+               configure_processors (0);
+               lx.release ();
+
                processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */
                _session.set_dirty ();
        }