diff --git a/libs/gst/base/gstcollectpads2.c b/libs/gst/base/gstcollectpads2.c index 3d14577664..df3203c370 100644 --- a/libs/gst/base/gstcollectpads2.c +++ b/libs/gst/base/gstcollectpads2.c @@ -1625,7 +1625,7 @@ gst_collect_pads2_event (GstPad * pad, GstObject * parent, GstEvent * event) /* forward event to unblock check_collected */ if (event_func) res = event_func (pads, data, event, event_user_data); - if (!res) + else res = gst_pad_event_default (pad, parent, event); /* now unblock the chain function. @@ -1754,7 +1754,7 @@ forward_or_default: } if (event_func) res = event_func (pads, data, event, event_user_data); - if (!res) + else res = gst_pad_event_default (pad, parent, event); if (need_unlock) GST_COLLECT_PADS2_STREAM_UNLOCK (pads); @@ -1765,9 +1765,9 @@ forward_or_eat: GST_COLLECT_PADS2_STREAM_LOCK (pads); need_unlock = TRUE; } - if (event_func) + if (event_func) { res = event_func (pads, data, event, event_user_data); - if (!res) { + } else { gst_event_unref (event); res = TRUE; } diff --git a/libs/gst/base/gstcollectpads2.h b/libs/gst/base/gstcollectpads2.h index 165203a574..64ae4ea0d8 100644 --- a/libs/gst/base/gstcollectpads2.h +++ b/libs/gst/base/gstcollectpads2.h @@ -206,7 +206,11 @@ typedef gint (*GstCollectPads2CompareFunction) (GstCollectPads2 *pads, * @event: the #GstEvent received * @user_data: user data passed to gst_collect_pads2_set_event_function() * - * A function that will be called after collectpads has processed the event. + * A function that will be called while processing an event. It takes + * ownership of the event and is responsible for forwarding + * events downstream (with gst_pad_event_default()) or dropping events. + * + * The SEGMENT and EOS events should usually be dropped by this function. * * Returns: %TRUE if the pad could handle the event *