queuearray: make _find() find the value if no compare function is provided
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 30 Jan 2013 11:55:18 +0000 (11:55 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 30 Jan 2013 12:11:33 +0000 (12:11 +0000)
Allow NULL as compare function for direct value lookup.

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

Conflicts:
plugins/elements/gstqueuearray.c

plugins/elements/gstqueuearray.c

index 174b11498ba22d7a4df45ca8eb242c7e4c388280..17e64187fd889775bf0f1610fb8cd7b2493de79c 100644 (file)
@@ -193,9 +193,18 @@ gst_queue_array_find (GstQueueArray * array, GCompareFunc func, gpointer data)
 {
   guint i;
 
-  /* Scan from head to tail */
-  for (i = 0; i < array->length; i++)
-    if (func (array->array[(i + array->head) % array->size], data) == 0)
-      return (i + array->head) % array->size;
+  if (func != NULL) {
+    /* Scan from head to tail */
+    for (i = 0; i < array->length; i++) {
+      if (func (array->array[(i + array->head) % array->size], data) == 0)
+        return (i + array->head) % array->size;
+    }
+  } else {
+    for (i = 0; i < array->length; i++) {
+      if (array->array[(i + array->head) % array->size] == data)
+        return (i + array->head) % array->size;
+    }
+  }
+
   return -1;
 }