]> git.sesse.net Git - vlc/blobdiff - src/misc/threads.c
vlc_global_mutex: common functions for process-wide mutexes
[vlc] / src / misc / threads.c
index 5099041ef18d7948b558ffdeddfb94d6cadc73f6..ba93c1bb275af8309116bfc3c61df5d0acd22c02 100644 (file)
@@ -233,3 +233,24 @@ void vlc_thread_cancel (vlc_object_t *obj)
     if (priv->b_thread)
         vlc_cancel (priv->thread_id);
 }
+
+/*** Global locks ***/
+
+void vlc_global_mutex (unsigned n, bool acquire)
+{
+    static vlc_mutex_t locks[] = {
+        VLC_STATIC_MUTEX,
+        VLC_STATIC_MUTEX,
+    };
+    assert (n < (sizeof (locks) / sizeof (locks[0])));
+    vlc_mutex_t *lock = locks + n;
+
+    if (acquire)
+        vlc_mutex_lock (lock);
+    else
+        vlc_mutex_unlock (lock);
+
+    /* Compile-time assertion ;-) */
+    char enough_locks[(sizeof (locks) / sizeof (locks[0])) - VLC_MAX_MUTEX];
+    (void) enough_locks;
+}