clockselect: Don't register GstClockSelectClockId multiple times
authorSebastian Dröge <sebastian@centricular.com>
Tue, 2 Jun 2020 09:51:35 +0000 (12:51 +0300)
committerThibault Saunier <tsaunier@igalia.com>
Thu, 4 Jun 2020 17:33:16 +0000 (13:33 -0400)
gst/debugutils/gstclockselect.c

index 4181e63..3fa1a04 100644 (file)
@@ -49,19 +49,23 @@ static GType
 gst_clock_select_clock_id_get_type (void)
 {
   static GType clock_id_type = 0;
-  static const GEnumValue clock_id_types[] = {
-    {GST_CLOCK_SELECT_CLOCK_ID_DEFAULT,
-        "Default (elected from elements) pipeline clock", "default"},
-    {GST_CLOCK_SELECT_CLOCK_ID_MONOTONIC, "System monotonic clock",
-        "monotonic"},
-    {GST_CLOCK_SELECT_CLOCK_ID_REALTIME, "System realtime clock", "realtime"},
-    {GST_CLOCK_SELECT_CLOCK_ID_PTP, "PTP clock", "ptp"},
-    {GST_CLOCK_SELECT_CLOCK_ID_TAI, "System TAI clock", "tai"},
-    {0, NULL, NULL},
-  };
-
-  clock_id_type =
-      g_enum_register_static ("GstClockSelectClockId", clock_id_types);
+
+  if (g_once_init_enter (&clock_id_type)) {
+    GType type;
+    static const GEnumValue clock_id_types[] = {
+      {GST_CLOCK_SELECT_CLOCK_ID_DEFAULT,
+          "Default (elected from elements) pipeline clock", "default"},
+      {GST_CLOCK_SELECT_CLOCK_ID_MONOTONIC, "System monotonic clock",
+          "monotonic"},
+      {GST_CLOCK_SELECT_CLOCK_ID_REALTIME, "System realtime clock", "realtime"},
+      {GST_CLOCK_SELECT_CLOCK_ID_PTP, "PTP clock", "ptp"},
+      {GST_CLOCK_SELECT_CLOCK_ID_TAI, "System TAI clock", "tai"},
+      {0, NULL, NULL},
+    };
+
+    type = g_enum_register_static ("GstClockSelectClockId", clock_id_types);
+    g_once_init_leave (&clock_id_type, type);
+  }
 
   return clock_id_type;
 }