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.
This commit is contained in:
Wim Taymans 2013-01-29 09:45:23 +01:00
parent b5906cda6e
commit e697254fc1

View file

@ -2579,7 +2579,7 @@ gst_base_src_loop (GstPad * pad)
if (gst_pad_check_reconfigure (pad)) { if (gst_pad_check_reconfigure (pad)) {
if (!gst_base_src_negotiate (src)) { if (!gst_base_src_negotiate (src)) {
gst_pad_mark_reconfigure (pad); gst_pad_mark_reconfigure (pad);
goto not_negotiated; goto negotiate_failed;
} }
} }
@ -2746,7 +2746,12 @@ not_negotiated:
GST_DEBUG_OBJECT (src, "Retrying to renegotiate"); GST_DEBUG_OBJECT (src, "Retrying to renegotiate");
return; 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; ret = GST_FLOW_NOT_NEGOTIATED;
goto pause; goto pause;
} }