summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2010-08-20 18:04:52 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2010-08-20 18:04:52 +0200
commit57cc780c45a4c14decda0ac5fde58db3d13c7980 (patch)
treede0b11b218a8342e016ae925255817d73dbfedd0
parent9f87f57a8273631526e938f64ae90ce3efc31a02 (diff)
bin: relax the source element check
When there is a sink inside a bin, the SINK flag is set on the bin. When we are trying to iterate the source elements, also include the bins with the SINK flag because they could also contain source elements, in which case they are also a source. This solves the case where sending an EOS to a pipeline didn't get dispatched to all source elements. See #625597
-rw-r--r--gst/gstbin.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gst/gstbin.c b/gst/gstbin.c
index 2019b9f948..b825d4ce24 100644
--- a/gst/gstbin.c
+++ b/gst/gstbin.c
@@ -1641,10 +1641,11 @@ bin_element_is_src (GstElement * child, GstBin * bin)
gboolean is_src = FALSE;
/* we lock the child here for the remainder of the function to
- * get its name and flag safely. */
+ * get its name and other info safely. */
GST_OBJECT_LOCK (child);
- if (!GST_OBJECT_FLAG_IS_SET (child, GST_ELEMENT_IS_SINK) &&
- !child->numsinkpads) {
+ if (child->numsinkpads == 0) {
+ /* rough check.. We could improve this by checking if there are no sinkpad
+ * templates available. */
is_src = TRUE;
}