summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-14 22:13:25 +0200
committerRobin Gareus <robin@gareus.org>2016-04-14 22:13:25 +0200
commit03db4805fde8cd455ff1dbb284118d96152efeca (patch)
tree81e9edaffcd2c1d00defa0e80a8ea4c60482e15d
parent4f3fed1c08f0c9263f28e39f06db66021b15d714 (diff)
fix locking when switching strict i/o.
try_configure_processors_unlocked() needs process lock
-rw-r--r--libs/ardour/route.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 1db571385f..a3eacb3588 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -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 ();
}