diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-01-25 18:49:15 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-01-26 10:45:45 +0100 |
commit | 6b9280b18c092ccd917ce60cc01832e74f9897f0 (patch) | |
tree | a55a22f46da4283102b880a95223302c9bdab39c | |
parent | b8f5d7a39fdbb6d504408b76beb432a2f1ff5678 (diff) |
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.
-rw-r--r-- | libs/gst/base/gstcollectpads2.c | 8 | ||||
-rw-r--r-- | 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 * |