From ae389dfe864d0e60167408b46c4df848b52761f6 Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Sun, 8 Jan 2006 16:34:59 +0000 Subject: [PATCH] Made threadsafe --- gnoemoe/gm-debug.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnoemoe/gm-debug.c b/gnoemoe/gm-debug.c index 0b1eeac..a6034a5 100644 --- a/gnoemoe/gm-debug.c +++ b/gnoemoe/gm-debug.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "gm-debug.h" @@ -20,6 +21,7 @@ static LevelMap level_mapping[] = { }; static gint debug_level = DEBUG_ALWAYS; +static pthread_mutex_t mutex_debug = PTHREAD_MUTEX_INITIALIZER; static void gm_debug_msg_real(FILE *f, struct tm *timet, gchar *line, va_list args) { @@ -34,7 +36,9 @@ gm_debug_msg(gint level, gchar *line, ...) { struct tm *timet; time_t timer; va_list args; - + + pthread_mutex_lock(&mutex_debug); + if ((debug_level | level) == debug_level) { va_start(args, line); timer = time(0); @@ -50,6 +54,8 @@ gm_debug_msg(gint level, gchar *line, ...) { va_end(args); } + + pthread_mutex_unlock(&mutex_debug); } void @@ -64,6 +70,8 @@ gm_debug_set_level(gchar *level) { levels = g_strsplit(level, ",", -1); + pthread_mutex_lock(&mutex_debug); + for (iter = levels; *iter; ++iter) { for (map = level_mapping; map->name; ++map) { if (strcasecmp(map->name, *iter) == 0) { @@ -73,5 +81,6 @@ gm_debug_set_level(gchar *level) { } } + pthread_mutex_unlock(&mutex_debug); g_strfreev(levels); }