+2008-11-11 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * 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.
+
2008-11-11 Sebastian Dröge <slomo@circular-chaos.org>
* gst/matroska/matroska-mux.c:
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
gint64 cur, stop;
gboolean flush;
gboolean update;
+ gboolean playing;
GstSegment seeksegment = { 0, };
if (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 */