From 6b9280b18c092ccd917ce60cc01832e74f9897f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 25 Jan 2012 18:49:15 +0100 Subject: [PATCH] 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. --- libs/gst/base/gstcollectpads2.c | 8 ++++---- libs/gst/base/gstcollectpads2.h | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) 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 *