Skip to content

Commit

Permalink
gcrypt: use vlc_global_mutex
Browse files Browse the repository at this point in the history
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().
  • Loading branch information
Rémi Denis-Courmont committed Jun 3, 2010
1 parent 2a5fa32 commit 8971701
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions include/vlc_gcrypt.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*****************************************************************************
* 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
* it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -90,14 +90,13 @@ static inline void vlc_gcrypt_init (void)
* plugins linking with gcrypt, and some underlying libraries may use it
* behind our back. Only way is to always link gcrypt statically (ouch!) or
* have upstream gcrypt provide one shared object per threading system. */
static vlc_mutex_t lock = VLC_STATIC_MUTEX;
static bool done = false;

vlc_mutex_lock (&lock);
vlc_global_lock (VLC_GCRYPT_MUTEX);
if (!done)
{
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_vlc);
done = true;
}
vlc_mutex_unlock (&lock);
vlc_global_unlock (VLC_GCRYPT_MUTEX);
}

0 comments on commit 8971701

Please sign in to comment.