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 dc7eca6264
commit 1ee8ec7921

View file

@ -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;
}