diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c index b4e90fcf4a..22faf8a3c7 100644 --- a/gst/playback/gstplaybin2.c +++ b/gst/playback/gstplaybin2.c @@ -5774,6 +5774,9 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition) break; } + if (ret == GST_STATE_CHANGE_NO_PREROLL) + do_async_done (playbin); + return ret; /* ERRORS */ diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c index 24e4427802..2a4e7bca7c 100644 --- a/gst/playback/gsturidecodebin.c +++ b/gst/playback/gsturidecodebin.c @@ -2752,8 +2752,6 @@ gst_uri_decode_bin_change_state (GstElement * element, ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); if (ret == GST_STATE_CHANGE_FAILURE) goto setup_failed; - else if (ret == GST_STATE_CHANGE_NO_PREROLL) - do_async_done (decoder); switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: @@ -2799,6 +2797,10 @@ gst_uri_decode_bin_change_state (GstElement * element, default: break; } + + if (ret == GST_STATE_CHANGE_NO_PREROLL) + do_async_done (decoder); + return ret; /* ERRORS */