diff options
| author | Wim Taymans <wim.taymans@gmail.com> | 2008-11-11 15:16:31 +0000 | 
|---|---|---|
| committer | Wim Taymans <wim.taymans@gmail.com> | 2008-11-11 15:16:31 +0000 | 
| commit | 8a2bcfecb005d3caf8c69798dd377f2c781607f7 (patch) | |
| tree | 37a68e5c7a4ba0bb2e7a489335c20959718e0e87 | |
| parent | 320e96a27c5328998c8cf712bec9b6a142d92d6d (diff) | |
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.
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | gst/rtsp/gstrtspsrc.c | 17 | 
2 files changed, 18 insertions, 6 deletions
@@ -1,3 +1,10 @@ +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: 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 */  | 
