diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2005-09-21 21:36:00 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2005-09-21 21:36:00 +0000 |
commit | 66ce301647e1cfb167545b68bdd835dd1e23cba6 (patch) | |
tree | fcd6245df46971f343c4bcc739fff86679400243 | |
parent | a07f338da828b882c3776cd76d364fd6ecd6fc5b (diff) | |
download | gstreamer-66ce301647e1cfb167545b68bdd835dd1e23cba6.tar.gz |
gst/gstinfo.c: Add mutex to serialise access to the hash table with the function pointer => function name string mapp...
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller <tim at centricular dot net>
* gst/gstinfo.c: (_gst_debug_nameof_funcptr),
(_gst_debug_register_funcptr):
Add mutex to serialise access to the hash table with
the function pointer => function name string mapping;
make that hash table static scope (#316809).
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | gst/gstinfo.c | 17 |
2 files changed, 27 insertions, 7 deletions
@@ -1,8 +1,19 @@ -2005-09-13 Steve Lhomme <steve.lhomme@free.fr> +2005-09-21 Francis Labonte <francis_labonte at hotmail dot com> + + Reviewed by: Tim-Philipp Müller <tim at centricular dot net> + + * gst/gstinfo.c: (_gst_debug_nameof_funcptr), + (_gst_debug_register_funcptr): + Add mutex to serialise access to the hash table with + the function pointer => function name string mapping; + make that hash table static scope (#316809). + +2005-09-13 Steve Lhomme <steve.lhomme@free.fr> + * win32/config.h: - update some defines for cleaner and better compilation + update some defines for cleaner and better compilation * win32/gst-typefind.vcproj: - added gst-typefind to the MSVC7 build + added gst-typefind to the MSVC7 build 2005-09-13 Julien MOUTTE <julien@moutte.net> diff --git a/gst/gstinfo.c b/gst/gstinfo.c index 36ebbd8181..c158f1b9cf 100644 --- a/gst/gstinfo.c +++ b/gst/gstinfo.c @@ -1038,7 +1038,9 @@ gst_debug_get_all_categories (void) /*** FUNCTION POINTERS ********************************************************/ -GHashTable *__gst_function_pointers = NULL; +static GHashTable *__gst_function_pointers; /* NULL */ +static GStaticMutex __dbg_functions_mutex = G_STATIC_MUTEX_INIT; + const gchar * _gst_debug_nameof_funcptr (void *ptr) G_GNUC_NO_INSTRUMENT; @@ -1052,9 +1054,12 @@ _gst_debug_nameof_funcptr (void *ptr) Dl_info dlinfo; #endif - if (__gst_function_pointers - && (ptrname = g_hash_table_lookup (__gst_function_pointers, ptr))) { - return ptrname; + if (__gst_function_pointers) { + g_static_mutex_lock (&__dbg_functions_mutex); + ptrname = g_hash_table_lookup (__gst_function_pointers, ptr); + g_static_mutex_unlock (&__dbg_functions_mutex); + if (ptrname) + return ptrname; } /* we need to create an entry in the hash table for this one so we don't leak * the name */ @@ -1077,11 +1082,15 @@ _gst_debug_nameof_funcptr (void *ptr) void * _gst_debug_register_funcptr (void *ptr, gchar * ptrname) { + g_static_mutex_lock (&__dbg_functions_mutex); + if (!__gst_function_pointers) __gst_function_pointers = g_hash_table_new (g_direct_hash, g_direct_equal); if (!g_hash_table_lookup (__gst_function_pointers, ptr)) g_hash_table_insert (__gst_function_pointers, ptr, ptrname); + g_static_mutex_unlock (&__dbg_functions_mutex); + return ptr; } |