summaryrefslogtreecommitdiff
path: root/gst/gstpad.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-08-15 17:59:21 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-08-15 17:59:21 +0200
commit1176fbf6dc96f705a8c15c4dba5ecd33cc8d8d39 (patch)
treeac7825b9d995c12f2d207e0f586130882cdbe931 /gst/gstpad.c
parent7f0e0ff3ca4f3533e66843c084d084517cff4d47 (diff)
pad: Break sticky event array iterations if the type is bigger than the one we look for
Microoptimization we can do because the array is sorted by type.
Diffstat (limited to 'gst/gstpad.c')
-rw-r--r--gst/gstpad.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gst/gstpad.c b/gst/gstpad.c
index 5a7fc0ad26..183fc91300 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -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);