From: Wim Taymans Date: Tue, 29 Jan 2013 08:45:23 +0000 (+0100) Subject: basesrc: handle renegotiation correctly X-Git-Tag: 1.1.1~303 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e697254fc1de469e96127a5a92e1fd0c508a9f75;p=platform%2Fupstream%2Fgstreamer.git basesrc: handle renegotiation correctly Don't retry to negotiate when we fail to negotiate but instead produce a NOT_NEGOTIATED error. We only want to retry negotiation if the result from gst_pad_push() returned NOT_NEGOTIATED. --- diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c index b83762c..2e2e780 100644 --- a/libs/gst/base/gstbasesrc.c +++ b/libs/gst/base/gstbasesrc.c @@ -2579,7 +2579,7 @@ gst_base_src_loop (GstPad * pad) if (gst_pad_check_reconfigure (pad)) { if (!gst_base_src_negotiate (src)) { gst_pad_mark_reconfigure (pad); - goto not_negotiated; + goto negotiate_failed; } } @@ -2746,7 +2746,12 @@ not_negotiated: GST_DEBUG_OBJECT (src, "Retrying to renegotiate"); return; } - GST_DEBUG_OBJECT (src, "Failed to renegotiate"); + /* fallthrough when push returns NOT_NEGOTIATED and we don't have + * a pending negotiation request on our srcpad */ + } +negotiate_failed: + { + GST_DEBUG_OBJECT (src, "Not negotiated"); ret = GST_FLOW_NOT_NEGOTIATED; goto pause; }