summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/mutex-posix.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pulsecore/mutex-posix.c')
-rw-r--r--src/pulsecore/mutex-posix.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/pulsecore/mutex-posix.c b/src/pulsecore/mutex-posix.c
index 64f466d9..19e095bb 100644
--- a/src/pulsecore/mutex-posix.c
+++ b/src/pulsecore/mutex-posix.c
@@ -40,15 +40,20 @@ struct pa_cond {
pthread_cond_t cond;
};
-pa_mutex* pa_mutex_new(int recursive) {
+pa_mutex* pa_mutex_new(pa_bool_t recursive, pa_bool_t inherit_priority) {
pa_mutex *m;
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
-
+
if (recursive)
pa_assert_se(pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) == 0);
+#ifdef HAVE_PTHREAD_PRIO_INHERIT
+ if (inherit_priority)
+ pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT);
+#endif
+
m = pa_xnew(pa_mutex, 1);
pa_assert_se(pthread_mutex_init(&m->mutex, &attr) == 0);
return m;