diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-02-19 01:28:20 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-02-19 01:28:20 +0200 |
commit | e02d6983c9ea73b32fcefb47e1fd7e72067e9e6d (patch) | |
tree | 79af5368fda545748c8a4ef46ac09299743f7842 /gst/liveadder | |
parent | 44ffb87f8aa6e57d2153047b28d448cfd9651b35 (diff) | |
download | gstreamer-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.c | 8 |
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: |