Commit 89717011 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

gcrypt: use vlc_global_mutex

This saves a few mutexes, but it does not really solve gcrypt
reentrancy. gcry_control() should only be called once for all per copy
of gcrypt in the memory. This is hard to conciliate with dlopen().
parent 2a5fa328
/***************************************************************************** /*****************************************************************************
* vlc_gcrypt.h: VLC thread support for gcrypt * vlc_gcrypt.h: VLC thread support for gcrypt
***************************************************************************** *****************************************************************************
* Copyright (C) 2004-2008 Rémi Denis-Courmont * Copyright (C) 2004-2010 Rémi Denis-Courmont
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -90,14 +90,13 @@ static inline void vlc_gcrypt_init (void) ...@@ -90,14 +90,13 @@ static inline void vlc_gcrypt_init (void)
* plugins linking with gcrypt, and some underlying libraries may use it * plugins linking with gcrypt, and some underlying libraries may use it
* behind our back. Only way is to always link gcrypt statically (ouch!) or * behind our back. Only way is to always link gcrypt statically (ouch!) or
* have upstream gcrypt provide one shared object per threading system. */ * have upstream gcrypt provide one shared object per threading system. */
static vlc_mutex_t lock = VLC_STATIC_MUTEX;
static bool done = false; static bool done = false;
vlc_mutex_lock (&lock); vlc_global_lock (VLC_GCRYPT_MUTEX);
if (!done) if (!done)
{ {
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_vlc); gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_vlc);
done = true; done = true;
} }
vlc_mutex_unlock (&lock); vlc_global_unlock (VLC_GCRYPT_MUTEX);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment