X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Fthreads.c;h=fd84ad7270cc94de9779719290817947eacda60b;hb=b4c9cb160e24388a8c6092717f5257cdf46f146a;hp=5099041ef18d7948b558ffdeddfb94d6cadc73f6;hpb=8e2f8915937936ca788bc36bcbf1b2a5859b8c3f;p=vlc diff --git a/src/misc/threads.c b/src/misc/threads.c index 5099041ef1..fd84ad7270 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -233,3 +233,25 @@ 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, + 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; +}