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 */ /* forward event to unblock check_collected */
if (event_func) if (event_func)
res = event_func (pads, data, event, event_user_data); res = event_func (pads, data, event, event_user_data);
if (!res) else
res = gst_pad_event_default (pad, parent, event); res = gst_pad_event_default (pad, parent, event);
/* now unblock the chain function. /* now unblock the chain function.
@ -1754,7 +1754,7 @@ forward_or_default:
} }
if (event_func) if (event_func)
res = event_func (pads, data, event, event_user_data); res = event_func (pads, data, event, event_user_data);
if (!res) else
res = gst_pad_event_default (pad, parent, event); res = gst_pad_event_default (pad, parent, event);
if (need_unlock) if (need_unlock)
GST_COLLECT_PADS2_STREAM_UNLOCK (pads); GST_COLLECT_PADS2_STREAM_UNLOCK (pads);
@ -1765,9 +1765,9 @@ forward_or_eat:
GST_COLLECT_PADS2_STREAM_LOCK (pads); GST_COLLECT_PADS2_STREAM_LOCK (pads);
need_unlock = TRUE; need_unlock = TRUE;
} }
if (event_func) if (event_func) {
res = event_func (pads, data, event, event_user_data); res = event_func (pads, data, event, event_user_data);
if (!res) { } else {
gst_event_unref (event); gst_event_unref (event);
res = TRUE; res = TRUE;
} }

View file

@ -206,7 +206,11 @@ typedef gint (*GstCollectPads2CompareFunction) (GstCollectPads2 *pads,
* @event: the #GstEvent received * @event: the #GstEvent received
* @user_data: user data passed to gst_collect_pads2_set_event_function() * @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 * Returns: %TRUE if the pad could handle the event
* *