diff options
author | Stefan Kost <ensonic@users.sf.net> | 2009-03-04 21:21:56 +0200 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2009-03-06 21:50:19 +0200 |
commit | 436b0e72752e3bad45dd26f1d51b542d66334cc4 (patch) | |
tree | 7d8e875b47351c6e6c1d293cb40ef77393b07811 /libs | |
parent | c20fb4c16f664ba57e23af68586afbdcfcac730c (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.c | 6 |
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: |