summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-01-25 18:49:15 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-01-26 10:45:45 +0100
commit6b9280b18c092ccd917ce60cc01832e74f9897f0 (patch)
treea55a22f46da4283102b880a95223302c9bdab39c
parentb8f5d7a39fdbb6d504408b76beb432a2f1ff5678 (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.c8
-rw-r--r--libs/gst/base/gstcollectpads2.h6
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
*