+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>
* docs/pwg/appendix-porting.xml:
/*** 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 (GstDebugFuncPtr ptr)
G_GNUC_NO_INSTRUMENT;
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 */
{
gpointer ptr = (gpointer) func;
+ 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);
}
#ifdef HAVE_PRINTF_EXTENSION