pad: Break sticky event array iterations if the type is bigger than the one we look for
authorSebastian Dröge <sebastian@centricular.com>
Sat, 15 Aug 2015 15:59:21 +0000 (17:59 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 15 Aug 2015 15:59:21 +0000 (17:59 +0200)
Microoptimization we can do because the array is sorted by type.

gst/gstpad.c

index 5a7fc0ad264a9d4b996cdd88d2fd046f8f7ec114..183fc913004ed5e4db54a3e2891fd77c98698ee0 100644 (file)
@@ -471,6 +471,8 @@ find_event_by_type (GstPad * pad, GstEventType type, guint idx)
       if (idx == 0)
         goto found;
       idx--;
+    } else if (GST_EVENT_TYPE (ev->event) > type) {
+      break;
     }
   }
   ev = NULL;
@@ -493,6 +495,8 @@ find_event (GstPad * pad, GstEvent * event)
     ev = &g_array_index (events, PadEvent, i);
     if (event == ev->event)
       goto found;
+    else if (GST_EVENT_TYPE (ev->event) > GST_EVENT_TYPE (event))
+      break;
   }
   ev = NULL;
 found:
@@ -516,7 +520,9 @@ remove_event_by_type (GstPad * pad, GstEventType type)
     if (ev->event == NULL)
       goto next;
 
-    if (GST_EVENT_TYPE (ev->event) != type)
+    if (GST_EVENT_TYPE (ev->event) > type)
+      break;
+    else if (GST_EVENT_TYPE (ev->event) != type)
       goto next;
 
     gst_event_unref (ev->event);