diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index f63ba9de06..4c6a47edbc 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -2184,15 +2184,6 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event) /* PLAY will add the range header now. */ src->need_range = TRUE; - /* and continue playing if needed */ - GST_OBJECT_LOCK (src); - playing = (GST_STATE_PENDING (src) == GST_STATE_VOID_PENDING - && GST_STATE (src) == GST_STATE_PLAYING) - || (GST_STATE_PENDING (src) == GST_STATE_PLAYING); - GST_OBJECT_UNLOCK (src); - if (playing) - gst_rtspsrc_play (src, &seeksegment, FALSE); - /* prepare for streaming again */ if (flush) { /* if we started flush, we stop now */ @@ -2221,6 +2212,15 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event) stream->discont = TRUE; } + /* and continue playing if needed */ + GST_OBJECT_LOCK (src); + playing = (GST_STATE_PENDING (src) == GST_STATE_VOID_PENDING + && GST_STATE (src) == GST_STATE_PLAYING) + || (GST_STATE_PENDING (src) == GST_STATE_PLAYING); + GST_OBJECT_UNLOCK (src); + if (playing) + gst_rtspsrc_play (src, &seeksegment, FALSE); + GST_RTSP_STREAM_UNLOCK (src); return TRUE;