diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-08-15 17:59:21 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-08-15 17:59:21 +0200 |
commit | 1176fbf6dc96f705a8c15c4dba5ecd33cc8d8d39 (patch) | |
tree | ac7825b9d995c12f2d207e0f586130882cdbe931 /gst/gstpad.c | |
parent | 7f0e0ff3ca4f3533e66843c084d084517cff4d47 (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.c | 8 |
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); |