mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-06 09:11:38 +01:00
fix various idiotic constructs. patches are mostly from sabotage, but some I wrote myself too.
34 lines
867 B
Diff
34 lines
867 B
Diff
--- alsa-lib-1.0.27.2.orig/src/conf.c
|
|
+++ alsa-lib-1.0.27.2/src/conf.c
|
|
@@ -427,8 +427,8 @@
|
|
#ifndef DOC_HIDDEN
|
|
|
|
#ifdef HAVE_LIBPTHREAD
|
|
-static pthread_mutex_t snd_config_update_mutex =
|
|
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
|
+static pthread_mutex_t snd_config_update_mutex;
|
|
+static pthread_once_t snd_config_update_mutex_once = PTHREAD_ONCE_INIT;
|
|
#endif
|
|
|
|
struct _snd_config {
|
|
@@ -472,8 +472,19 @@
|
|
|
|
#ifdef HAVE_LIBPTHREAD
|
|
|
|
+static void snd_config_init_mutex(void)
|
|
+{
|
|
+ pthread_mutexattr_t attr;
|
|
+
|
|
+ pthread_mutexattr_init(&attr);
|
|
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
|
+ pthread_mutex_init(&snd_config_update_mutex, &attr);
|
|
+ pthread_mutexattr_destroy(&attr);
|
|
+}
|
|
+
|
|
static inline void snd_config_lock(void)
|
|
{
|
|
+ pthread_once(&snd_config_update_mutex_once, snd_config_init_mutex);
|
|
pthread_mutex_lock(&snd_config_update_mutex);
|
|
}
|
|
|