From 8a2bcfecb005d3caf8c69798dd377f2c781607f7 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 11 Nov 2008 15:16:31 +0000 Subject: gst/rtsp/gstrtspsrc.c: Only pause/play in the seek handler when the source was playing. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_do_seek), (gst_rtspsrc_perform_seek): Only pause/play in the seek handler when the source was playing. Fixes #529379. --- gst/rtsp/gstrtspsrc.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'gst/rtsp') diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index ae50606e..dc55aa1f 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -1233,15 +1233,11 @@ gst_rtspsrc_connection_receive (GstRTSPSrc * src, GstRTSPMessage * message, static gboolean gst_rtspsrc_do_seek (GstRTSPSrc * src, GstSegment * segment) { - gboolean res; - src->state = GST_RTSP_STATE_SEEKING; /* PLAY will add the range header now. */ src->need_range = TRUE; - res = gst_rtspsrc_play (src, segment); - - return res; + return TRUE; } static gboolean @@ -1255,6 +1251,7 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event) gint64 cur, stop; gboolean flush; gboolean update; + gboolean playing; GstSegment seeksegment = { 0, }; if (event) { @@ -1321,10 +1318,18 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event) if ((stop = seeksegment.stop) == -1) stop = seeksegment.duration; - gst_rtspsrc_pause (src); + playing = (src->state == GST_RTSP_STATE_PLAYING); + + /* if we were playing, pause first */ + if (playing) + gst_rtspsrc_pause (src); res = gst_rtspsrc_do_seek (src, &seeksegment); + /* and continue playing */ + if (playing) + res = gst_rtspsrc_play (src, &seeksegment); + /* prepare for streaming again */ if (flush) { /* if we started flush, we stop now */ -- cgit