pad: avoid inadvertently dropping an event
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 11 Jul 2011 09:37:28 +0000 (11:37 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 11 Jul 2011 09:59:18 +0000 (11:59 +0200)
... particularly a non-sticky serialized event that happens to pass
when an event update is pending.

gst/gstpad.c

index 40b699a..56a4029 100644 (file)
@@ -4539,7 +4539,11 @@ gst_pad_send_event (GstPad * pad, GstEvent * event)
     gst_event_unref (event);
 
     result = TRUE;
-  } else {
+  }
+
+  /* ensure to pass on event;
+   * note that a sticky event has already been updated above */
+  if (G_LIKELY (!needs_events || !sticky)) {
     GstPadEventFunction eventfunc;
 
     if (G_UNLIKELY ((eventfunc = GST_PAD_EVENTFUNC (pad)) == NULL))