qtdemux: Fix build with GLib versions < 2.54
authorSeungha Yang <seungha.yang@navercorp.com>
Fri, 19 Oct 2018 15:10:04 +0000 (00:10 +0900)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 20 Oct 2018 11:38:32 +0000 (12:38 +0100)
g_ptr_array_find_with_equal_func was introduced in glib 2.54
which is a higher version than our minimum required one.

https://bugzilla.gnome.org/show_bug.cgi?id=797239

gst/isomp4/qtdemux.c

index dadf354..6832a5e 100644 (file)
@@ -12507,6 +12507,33 @@ qtdemux_reuse_and_configure_stream (GstQTDemux * qtdemux,
   return gst_qtdemux_configure_stream (qtdemux, newstream);
 }
 
+/* g_ptr_array_find_with_equal_func is available since 2.54,
+ * replacement until we can depend unconditionally on the real one in GLib */
+#if !GLIB_CHECK_VERSION(2,54,0)
+#define g_ptr_array_find_with_equal_func qtdemux_ptr_array_find_with_equal_func
+static gboolean
+qtdemux_ptr_array_find_with_equal_func (GPtrArray * haystack,
+    gconstpointer needle, GEqualFunc equal_func, guint * index_)
+{
+  guint i;
+
+  g_return_val_if_fail (haystack != NULL, FALSE);
+
+  if (equal_func == NULL)
+    equal_func = g_direct_equal;
+
+  for (i = 0; i < haystack->len; i++) {
+    if (equal_func (g_ptr_array_index (haystack, i), needle)) {
+      if (index_ != NULL)
+        *index_ = i;
+      return TRUE;
+    }
+  }
+
+  return FALSE;
+}
+#endif
+
 static gboolean
 qtdemux_update_streams (GstQTDemux * qtdemux)
 {