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).
* gst/registries/.cvsignore:
Remove left-over file.
This commit is contained in:
Tim-Philipp Müller 2005-09-21 21:39:06 +00:00
parent 3940710283
commit b907cd9815
3 changed files with 26 additions and 9 deletions

View file

@ -1,3 +1,16 @@
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).
* gst/registries/.cvsignore:
Remove left-over file.
2005-09-21 Tim-Philipp Müller <tim at centricular dot net> 2005-09-21 Tim-Philipp Müller <tim at centricular dot net>
* docs/pwg/appendix-porting.xml: * docs/pwg/appendix-porting.xml:

View file

@ -1030,7 +1030,9 @@ gst_debug_get_all_categories (void)
/*** FUNCTION POINTERS ********************************************************/ /*** FUNCTION POINTERS ********************************************************/
GHashTable *__gst_function_pointers = NULL; static GHashTable *__gst_function_pointers; /* NULL */
static GStaticMutex __dbg_functions_mutex = G_STATIC_MUTEX_INIT;
const gchar * const gchar *
_gst_debug_nameof_funcptr (GstDebugFuncPtr ptr) _gst_debug_nameof_funcptr (GstDebugFuncPtr ptr)
G_GNUC_NO_INSTRUMENT; G_GNUC_NO_INSTRUMENT;
@ -1045,9 +1047,12 @@ _gst_debug_nameof_funcptr (GstDebugFuncPtr ptr)
Dl_info dlinfo; Dl_info dlinfo;
#endif #endif
if (__gst_function_pointers if (__gst_function_pointers) {
&& (ptrname = g_hash_table_lookup (__gst_function_pointers, ptr))) { g_static_mutex_lock (&__dbg_functions_mutex);
return ptrname; 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 /* we need to create an entry in the hash table for this one so we don't leak
* the name */ * the name */
@ -1072,10 +1077,14 @@ _gst_debug_register_funcptr (GstDebugFuncPtr func, gchar * ptrname)
{ {
gpointer ptr = (gpointer) func; gpointer ptr = (gpointer) func;
g_static_mutex_lock (&__dbg_functions_mutex);
if (!__gst_function_pointers) if (!__gst_function_pointers)
__gst_function_pointers = g_hash_table_new (g_direct_hash, g_direct_equal); __gst_function_pointers = g_hash_table_new (g_direct_hash, g_direct_equal);
if (!g_hash_table_lookup (__gst_function_pointers, ptr)) if (!g_hash_table_lookup (__gst_function_pointers, ptr))
g_hash_table_insert (__gst_function_pointers, ptr, ptrname); g_hash_table_insert (__gst_function_pointers, ptr, ptrname);
g_static_mutex_unlock (&__dbg_functions_mutex);
} }
#ifdef HAVE_PRINTF_EXTENSION #ifdef HAVE_PRINTF_EXTENSION

View file

@ -1,5 +0,0 @@
registrytest
*.bb
*.bbg
*.da
*.gcno