From fe640d2ece74271f80f85c23c7b70b1efe977c86 Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Thu, 21 Jan 2016 21:06:46 -0500 Subject: [PATCH] port from pd-l2ork git: 44acf65bc2288b5dee264b289f681837ab85bbe1 *fixed regression caused by the Haswell/Skylake CPU pthread improvement as reported by Antonio Roberts --- pd/src/m_sched.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pd/src/m_sched.c b/pd/src/m_sched.c index a8559b980..01e358452 100644 --- a/pd/src/m_sched.c +++ b/pd/src/m_sched.c @@ -589,8 +589,10 @@ void sys_lock(void) //fprintf(stderr,"sys_lock\n"); if (!sys_mutex_lock) { - pthread_mutex_lock(&sys_mutex); - sys_mutex_lock = 1; + int res = pthread_mutex_lock(&sys_mutex); + //fprintf(stderr,"lock %d\n", res); + if (!res) + sys_mutex_lock = 1; } } @@ -599,14 +601,20 @@ void sys_unlock(void) //fprintf(stderr,"sys_unlock\n"); if (sys_mutex_lock) { - pthread_mutex_unlock(&sys_mutex); - sys_mutex_lock = 0; + int res = pthread_mutex_unlock(&sys_mutex); + //fprintf(stderr,"unlock %d\n", res); + if (!res) + sys_mutex_lock = 0; } } int sys_trylock(void) { - return pthread_mutex_trylock(&sys_mutex); + int res = pthread_mutex_trylock(&sys_mutex); + //fprintf(stderr,"trylock %d\n", res); + if (!res) + sys_mutex_lock = 1; + return res; } #else -- GitLab