summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2009-03-04 21:21:56 +0200
committerStefan Kost <ensonic@users.sf.net>2009-03-06 21:50:19 +0200
commit436b0e72752e3bad45dd26f1d51b542d66334cc4 (patch)
tree7d8e875b47351c6e6c1d293cb40ef77393b07811 /libs
parentc20fb4c16f664ba57e23af68586afbdcfcac730c (diff)
collectpads: reliably go to eos. Fixes #574160
Update collectpads status when removing pads.
Diffstat (limited to 'libs')
-rw-r--r--libs/gst/base/gstcollectpads.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index a024abc335..b6bf668635 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -82,6 +82,7 @@ GST_BOILERPLATE (GstCollectPads, gst_collect_pads, GstObject, GST_TYPE_OBJECT);
static void gst_collect_pads_clear (GstCollectPads * pads,
GstCollectData * data);
static GstFlowReturn gst_collect_pads_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_collect_pads_check_collected (GstCollectPads * pads);
static gboolean gst_collect_pads_event (GstPad * pad, GstEvent * event);
static void gst_collect_pads_finalize (GObject * object);
static void gst_collect_pads_init (GstCollectPads * pads,
@@ -419,6 +420,11 @@ gst_collect_pads_remove_pad (GstCollectPads * pads, GstPad * pad)
GST_COLLECT_PADS_PAD_UNLOCK (pads);
+ GST_OBJECT_LOCK (pad);
+ /* make sure we go to eos on last pad */
+ gst_collect_pads_check_collected (pads);
+ GST_OBJECT_UNLOCK (pad);
+
return TRUE;
unknown_pad: