collectpads2: Fix handling of the event function and document it

The event function is supposed to forward/drop the event in any case
now and takes ownership of the event.
This commit is contained in:
Sebastian Dröge 2012-01-25 18:49:15 +01:00
parent b8f5d7a39f
commit 6b9280b18c
2 changed files with 9 additions and 5 deletions

View file

@ -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;
}

View file

@ -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
*