Use macros to register boxed types thread safely
authorOlivier Crête <olivier.crete@collabora.com>
Sat, 28 Jan 2012 14:53:21 +0000 (14:53 +0000)
committerOlivier Crête <olivier.crete@collabora.com>
Sat, 28 Jan 2012 14:53:21 +0000 (14:53 +0000)
gst-libs/gst/pbutils/install-plugins.c
gst-libs/gst/rtsp/gstrtspurl.c
gst/adder/gstadder.c

index 5f52cbcab9bfc8eca6c34f5673c1a95fdeef9948..fe385ed5ac8f5c256ac5881efa5bc4169124b35d 100644 (file)
@@ -465,18 +465,9 @@ gst_install_plugins_context_copy (GstInstallPluginsContext * ctx)
   return ret;
 }
 
-GType
-gst_install_plugins_context_get_type (void)
-{
-  static GType gst_ipc_type = 0;
-
-  if (G_UNLIKELY (gst_ipc_type == 0)) {
-    gst_ipc_type = g_boxed_type_register_static ("GstInstallPluginsContext",
-        (GBoxedCopyFunc) gst_install_plugins_context_copy,
-        (GBoxedFreeFunc) gst_install_plugins_context_free);
-  }
-  return gst_ipc_type;
-}
+G_DEFINE_BOXED_TYPE (GstInstallPluginsContext, gst_install_plugins_context,
+    (GBoxedCopyFunc) gst_install_plugins_context_copy,
+    (GBoxedFreeFunc) gst_install_plugins_context_free);
 
 static const gchar *
 gst_install_plugins_get_helper (void)
index db2637c8ea251a998ed3f4ea4acea70c3cafdff2..c14dfbf317e5c91a828ed6482b4e8f93bc760b75 100644 (file)
 
 #include "gstrtspurl.h"
 
-GType
-gst_rtsp_url_get_type (void)
-{
-  static volatile gsize url_type = 0;
-
-  if (g_once_init_enter (&url_type)) {
-    GType tmp = g_boxed_type_register_static ("GstRTSPUrl",
-        (GBoxedCopyFunc) gst_rtsp_url_copy, (GBoxedFreeFunc) gst_rtsp_url_free);
-    g_once_init_leave (&url_type, tmp);
-  }
-
-  return (GType) url_type;
-}
+G_DEFINE_BOXED_TYPE (GstRTSPUrl, gst_rtsp_url,
+    (GBoxedCopyFunc) gst_rtsp_url_copy, (GBoxedFreeFunc) gst_rtsp_url_free);
 
 static const struct
 {
index 7a97e14ddc63eb37f42870d7b86c1d0864cc1f50..12567771491f1a00da26d60c8270d8589f95fb85 100644 (file)
@@ -1028,7 +1028,8 @@ gst_adder_release_pad (GstElement * element, GstPad * pad)
 
   GST_DEBUG_OBJECT (adder, "release pad %s:%s", GST_DEBUG_PAD_NAME (pad));
 
-  gst_collect_pads2_remove_pad (adder->collect, pad);
+  if (adder->collect)
+    gst_collect_pads2_remove_pad (adder->collect, pad);
   gst_element_remove_pad (element, pad);
 }