summaryrefslogtreecommitdiff
path: root/libs/evoral/src/Curve.cpp
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-15 18:13:56 +0200
committerRobin Gareus <robin@gareus.org>2015-04-15 18:13:56 +0200
commit96ce9c304e0a3e4a6b9882bbf1b831fbeaca6f11 (patch)
treeb8b20f36a0c0fefd0cd19137213119cdf016be21 /libs/evoral/src/Curve.cpp
parent9391da0c24000ac479adc00a04a7ad7e197f2049 (diff)
Replace control list locks with RWLocks4.0-rc4
towards fixing #6238 and #6096. GUI thread: #2 Glib::Threads::Mutex::Lock::Lock #3 Evoral::ControlList::eval #4 Evoral::Control::get_double #5 ARDOUR::AutomationControl::get_value #6 ProcessorEntry::Control::control_changed .. #15 PBD::Timer::timeout_handler at the same time: Audio Thread (try-lock, fails) #0 Evoral::Curve::rt_safe_get_vector #1 ARDOUR::Amp::setup_gain_automation #2 ARDOUR::Route::process_output_buffers Due to the failed try-lock.. AMP::_apply_gain_automation is false. and Amp::run() uses a different gain factor. -> click.
Diffstat (limited to 'libs/evoral/src/Curve.cpp')
-rw-r--r--libs/evoral/src/Curve.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/evoral/src/Curve.cpp b/libs/evoral/src/Curve.cpp
index f99a8075d5..aed972659b 100644
--- a/libs/evoral/src/Curve.cpp
+++ b/libs/evoral/src/Curve.cpp
@@ -171,7 +171,7 @@ Curve::solve ()
bool
Curve::rt_safe_get_vector (double x0, double x1, float *vec, int32_t veclen)
{
- Glib::Threads::Mutex::Lock lm(_list.lock(), Glib::Threads::TRY_LOCK);
+ Glib::Threads::RWLock::ReaderLock lm(_list.lock(), Glib::Threads::TRY_LOCK);
if (!lm.locked()) {
return false;
@@ -184,7 +184,7 @@ Curve::rt_safe_get_vector (double x0, double x1, float *vec, int32_t veclen)
void
Curve::get_vector (double x0, double x1, float *vec, int32_t veclen)
{
- Glib::Threads::Mutex::Lock lm(_list.lock());
+ Glib::Threads::RWLock::ReaderLock lm(_list.lock());
_get_vector (x0, x1, vec, veclen);
}