GRand: remove setup from g_thread_init_glib

Use g_once_init_enter instead.
This commit is contained in:
Ryan Lortie 2011-09-09 13:31:21 -04:00
parent 413186a962
commit 71c72d5e13
3 changed files with 4 additions and 15 deletions

View File

@ -130,10 +130,10 @@ static GRand* global_random = NULL;
static guint
get_random_version (void)
{
static gboolean initialized = FALSE;
static gsize initialized = FALSE;
static guint random_version;
if (!initialized)
if (g_once_init_enter (&initialized))
{
const gchar *version_string = g_getenv ("G_RANDOM_VERSION");
if (!version_string || version_string[0] == '\000' ||
@ -147,21 +147,12 @@ get_random_version (void)
version_string);
random_version = 22;
}
initialized = TRUE;
g_once_init_leave (&initialized, TRUE);
}
return random_version;
}
/* This is called from g_thread_init(). It's used to
* initialize some static data in a threadsafe way.
*/
void
_g_rand_thread_init (void)
{
(void)get_random_version ();
}
struct _GRand
{
guint32 mt[N]; /* the array for the state vector */

View File

@ -960,7 +960,6 @@ g_thread_init_glib (void)
/* we may run full-fledged initializers from here */
_g_convert_thread_init ();
_g_rand_thread_init ();
_g_main_thread_init ();
_g_utils_thread_init ();
}

View File

@ -54,7 +54,6 @@ G_GNUC_INTERNAL void _g_messages_thread_init_nomessage (void);
/* full fledged initializers */
G_GNUC_INTERNAL void _g_convert_thread_init (void);
G_GNUC_INTERNAL void _g_rand_thread_init (void);
G_GNUC_INTERNAL void _g_main_thread_init (void);
G_GNUC_INTERNAL void _g_atomic_thread_init (void);
G_GNUC_INTERNAL void _g_utils_thread_init (void);