summaryrefslogtreecommitdiff
path: root/gst/liveadder
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-02-19 01:28:20 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-02-19 01:28:20 +0200
commite02d6983c9ea73b32fcefb47e1fd7e72067e9e6d (patch)
tree79af5368fda545748c8a4ef46ac09299743f7842 /gst/liveadder
parent44ffb87f8aa6e57d2153047b28d448cfd9651b35 (diff)
downloadgstreamer-plugins-bad-e02d6983c9ea73b32fcefb47e1fd7e72067e9e6d.tar.gz
liveadder: Fail the latency query if one of the upstream queries fails
Diffstat (limited to 'gst/liveadder')
-rw-r--r--gst/liveadder/liveadder.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gst/liveadder/liveadder.c b/gst/liveadder/liveadder.c
index 62b0d1fcf..04fb7020f 100644
--- a/gst/liveadder/liveadder.c
+++ b/gst/liveadder/liveadder.c
@@ -734,6 +734,7 @@ gst_live_adder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
gboolean done = FALSE;
iter = gst_element_iterate_sink_pads (GST_ELEMENT (adder));
+ res = TRUE;
while (!done) {
switch (gst_iterator_next (iter, &item)) {
@@ -747,8 +748,6 @@ gst_live_adder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
gst_query_parse_latency (query, &pad_us_live, &pad_min_latency,
&pad_max_latency);
- res = TRUE;
-
GST_DEBUG_OBJECT (adder, "Peer latency for pad %s: min %"
GST_TIME_FORMAT " max %" GST_TIME_FORMAT,
GST_PAD_NAME (sinkpad),
@@ -759,10 +758,14 @@ gst_live_adder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
min_latency = MAX (pad_min_latency, min_latency);
max_latency = MIN (pad_max_latency, max_latency);
}
+ } else {
+ GST_LOG_OBJECT (adder, "latency query failed");
+ res = FALSE;
}
}
break;
case GST_ITERATOR_RESYNC:
+ res = TRUE;
min_latency = 0;
max_latency = G_MAXUINT64;
@@ -770,6 +773,7 @@ gst_live_adder_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
break;
case GST_ITERATOR_ERROR:
GST_ERROR_OBJECT (adder, "Error looping sink pads");
+ res = FALSE;
done = TRUE;
break;
case GST_ITERATOR_DONE: