+++ /dev/null
---- gst-libs/gst/adaptivedemux/gstadaptivedemux.c
-+++ gst-libs/gst/adaptivedemux/gstadaptivedemux.c
-@@ -1821,12 +1926,36 @@ gst_adaptive_demux_stream_push_buffer (GstAdaptiveDemuxStream * stream,
- gst_caps_unref (stream->pending_caps);
- stream->pending_caps = NULL;
- }
-+
-+ if (stream->do_block) {
-+
-+ g_mutex_lock (&demux->priv->preroll_lock);
-+ GST_MANIFEST_UNLOCK (demux);
-+
-+ gst_adaptive_demux_handle_preroll (demux, stream);
-+
-+ while (stream->do_block && !stream->cancelled) {
-+ GST_LOG_OBJECT (demux, "Stream %p sleeping for preroll", stream);
-+ g_cond_wait (&demux->priv->preroll_cond, &demux->priv->preroll_lock);
-+ }
-+ if (stream->cancelled) {
-+ GST_LOG_OBJECT (demux, "stream %p cancelled", stream);
-+ gst_buffer_unref (buffer);
-+ g_mutex_unlock (&demux->priv->preroll_lock);
-+ return GST_FLOW_FLUSHING;
-+ }
-+
-+ g_mutex_unlock (&demux->priv->preroll_lock);
-+ GST_MANIFEST_LOCK (demux);
-+ }
-+
- if (G_UNLIKELY (stream->pending_segment)) {
- GST_DEBUG_OBJECT (stream->pad, "Sending pending seg: %" GST_PTR_FORMAT,
- stream->pending_segment);
- gst_pad_push_event (stream->pad, stream->pending_segment);
- stream->pending_segment = NULL;
- }
-+
- if (G_UNLIKELY (stream->pending_tags || stream->bitrate_changed)) {
- GstTagList *tags = stream->pending_tags;
-
+++ /dev/null
-diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
-index a7cf6c0..34ea3aa 100644
---- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
-+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
-@@ -2533,6 +2533,8 @@ gst_adaptive_demux_stream_download_uri (GstAdaptiveDemux * demux,
- return ret;
- }
-
-+ gst_element_set_state (stream->src, GST_STATE_PLAYING);
-+
- /* wait for the fragment to be completely downloaded */
- GST_DEBUG_OBJECT (stream->pad,
- "Waiting for fragment download to finish: %s", uri);