validate: fix build with older GLib versions
authorTim-Philipp Müller <tim@centricular.com>
Mon, 29 Jul 2019 09:05:20 +0000 (10:05 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 29 Jul 2019 09:08:51 +0000 (10:08 +0100)
g_enum_to_string() is only available in newer ones.

Add compatibility workaround for the time being to decouple
this from the decision whether to bump the GLib requirement
and what to bump it to.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/199

Fixes #45

validate/gst/validate/gst-validate-scenario.c

index e0d0940..412c0e6 100644 (file)
@@ -187,6 +187,35 @@ typedef struct KeyFileGroupName
 
 #define NOT_KF_AFTER_FORCE_KF_EVT_TOLERANCE 1
 
+#if !GLIB_CHECK_VERSION(2,54,0)
+#define g_enum_to_string gst_validate_g_enum_to_string
+static gchar *
+gst_validate_g_enum_to_string (GType g_enum_type, gint value)
+{
+  gchar *result;
+  GEnumClass *enum_class;
+  GEnumValue *enum_value;
+
+  g_return_val_if_fail (G_TYPE_IS_ENUM (g_enum_type), NULL);
+
+  enum_class = g_type_class_ref (g_enum_type);
+
+  /* Already warned */
+  if (enum_class == NULL)
+    return g_strdup_printf ("%d", value);
+
+  enum_value = g_enum_get_value (enum_class, value);
+
+  if (enum_value == NULL)
+    result = g_strdup_printf ("%d", value);
+  else
+    result = g_strdup (enum_value->value_name);
+
+  g_type_class_unref (enum_class);
+  return result;
+}
+#endif
+
 static GstValidateInterceptionReturn
 gst_validate_scenario_intercept_report (GstValidateReporter * reporter,
     GstValidateReport * report)