capsfilter: Delete link directly in pending_events.
authorMathieu Duponchelle <mathieu.duponchelle@epitech.eu>
Thu, 29 Aug 2013 21:18:31 +0000 (23:18 +0200)
committerOlivier CrĂȘte <olivier.crete@collabora.com>
Fri, 30 Aug 2013 18:56:17 +0000 (14:56 -0400)
When removing a segment event.

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

plugins/elements/gstcapsfilter.c

index c5710ea..4cd8b71 100644 (file)
@@ -366,17 +366,17 @@ gst_capsfilter_sink_event (GstBaseTransform * trans, GstEvent * event)
   if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP) {
     GList *l;
 
-    for (l = filter->pending_events; l;) {
+    for (l = filter->pending_events; l; l = l->next) {
       if (GST_EVENT_TYPE (l->data) == GST_EVENT_SEGMENT) {
         gst_event_unref (l->data);
-        l = g_list_delete_link (l, l);
-      } else {
-        l = l->next;
+        filter->pending_events = g_list_delete_link (filter->pending_events, l);
+        break;
       }
     }
   }
 
-  if (!GST_EVENT_IS_STICKY (event) || GST_EVENT_TYPE (event) <= GST_EVENT_CAPS)
+  if (!GST_EVENT_IS_STICKY (event)
+      || GST_EVENT_TYPE (event) <= GST_EVENT_CAPS)
     goto done;
 
   /* If we get EOS before any buffers, just push all pending events */