urisourcebin: Call do_async_done when source state change returns NO_PREROLL

Otherwise for RTSP streams for example, the pipeline will never go to
PLAYING as it will be missing an ASYNC_DONE message.

https://bugzilla.gnome.org/show_bug.cgi?id=780099
This commit is contained in:
Thibault Saunier 2017-06-14 17:04:18 -04:00
parent cc28e7cce0
commit 7e94d2824f

View file

@ -2943,8 +2943,11 @@ gst_uri_source_bin_change_state (GstElement * element,
ret = gst_element_set_state (urisrc->source, GST_STATE_PAUSED); ret = gst_element_set_state (urisrc->source, GST_STATE_PAUSED);
if (ret == GST_STATE_CHANGE_FAILURE) if (ret == GST_STATE_CHANGE_FAILURE)
goto setup_failed; goto setup_failed;
if (ret == GST_STATE_CHANGE_SUCCESS) if (ret == GST_STATE_CHANGE_SUCCESS)
ret = GST_STATE_CHANGE_ASYNC; ret = GST_STATE_CHANGE_ASYNC;
else if (ret == GST_STATE_CHANGE_NO_PREROLL)
do_async_done (urisrc);
break; break;
case GST_STATE_CHANGE_PAUSED_TO_READY: case GST_STATE_CHANGE_PAUSED_TO_READY: