From 1176fbf6dc96f705a8c15c4dba5ecd33cc8d8d39 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 15 Aug 2015 17:59:21 +0200 Subject: [PATCH] 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. --- gst/gstpad.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gst/gstpad.c b/gst/gstpad.c index 5a7fc0a..183fc91 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); -- 2.7.4