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