gstreamer_core/gst/gstchildproxy.c
changeset 8 4a7fac7dd34a
parent 0 0e761a78d257
child 30 7e817e7e631c
--- a/gstreamer_core/gst/gstchildproxy.c	Fri Mar 19 09:35:09 2010 +0200
+++ b/gstreamer_core/gst/gstchildproxy.c	Fri Apr 16 15:15:52 2010 +0300
@@ -467,7 +467,7 @@
 /**
  * gst_child_proxy_child_removed:
  * @object: the parent object
- * @child: the newly added child
+ * @child: the removed child
  *
  * Emits the "child-removed" signal.
  */
@@ -497,6 +497,8 @@
 	 *
 	 * Will be emitted after the @object was added to the @child_proxy.
 	 */
+    /* FIXME 0.11: use GST_TYPE_OBJECT as GstChildProxy only
+     * supports GstObjects */
     signals[CHILD_ADDED] =
         g_signal_new ("child-added", G_TYPE_FROM_CLASS (g_class),
         G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstChildProxyInterface,
@@ -510,6 +512,8 @@
 	 *
 	 * Will be emitted after the @object was removed from the @child_proxy.
 	 */
+    /* FIXME 0.11: use GST_TYPE_OBJECT as GstChildProxy only
+     * supports GstObjects */
     signals[CHILD_REMOVED] =
         g_signal_new ("child-removed", G_TYPE_FROM_CLASS (g_class),
         G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstChildProxyInterface,
@@ -527,9 +531,10 @@
 GType
 gst_child_proxy_get_type (void)
 {
-  static GType type = 0;
+  static volatile gsize type = 0;
 
-  if (G_UNLIKELY (type == 0)) {
+  if (g_once_init_enter (&type)) {
+    GType _type;
     static const GTypeInfo info = {
       sizeof (GstChildProxyInterface),
       gst_child_proxy_base_init,        /* base_init */
@@ -541,9 +546,12 @@
       0,                        /* n_preallocs */
       NULL                      /* instance_init */
     };
-    type = g_type_register_static (G_TYPE_INTERFACE, "GstChildProxy", &info, 0);
 
-    g_type_interface_add_prerequisite (type, GST_TYPE_OBJECT);
+    _type =
+        g_type_register_static (G_TYPE_INTERFACE, "GstChildProxy", &info, 0);
+
+    g_type_interface_add_prerequisite (_type, GST_TYPE_OBJECT);
+    g_once_init_leave (&type, (gsize) _type);
   }
   return type;
 }