gdp: make public enum _get_type() functions thread-safe
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Oct 2010 08:34:47 +0000 (09:34 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sun, 25 Dec 2011 22:49:59 +0000 (22:49 +0000)
Not that it is likely to matter in practice, but since these are public
API they should probably be thread-safe.

gst/gdp/dataprotocol.c

index 5e413b0..b57d377 100644 (file)
@@ -292,18 +292,19 @@ gst_dp_dump_byte_array (guint8 * array, guint length)
 GType
 gst_dp_version_get_type (void)
 {
-  static GType gst_dp_version_type = 0;
+  static gsize gst_dp_version_type = 0;
   static const GEnumValue gst_dp_version[] = {
     {GST_DP_VERSION_0_2, "GST_DP_VERSION_0_2", "0.2"},
     {GST_DP_VERSION_1_0, "GST_DP_VERSION_1_0", "1.0"},
     {0, NULL, NULL},
   };
 
-  if (!gst_dp_version_type) {
-    gst_dp_version_type =
-        g_enum_register_static ("GstDPVersion", gst_dp_version);
+  if (g_once_init_enter (&gst_dp_version_type)) {
+    GType tmp = g_enum_register_static ("GstDPVersion", gst_dp_version);
+    g_once_init_leave (&gst_dp_version_type, tmp);
   }
-  return gst_dp_version_type;
+
+  return (GType) gst_dp_version_type;
 };
 
 /**