rtspsrc: fix seeking
authorAlessandro Decina <alessandro.d@gmail.com>
Wed, 5 Mar 2014 10:39:09 +0000 (11:39 +0100)
committerAlessandro Decina <alessandro.d@gmail.com>
Wed, 5 Mar 2014 10:39:09 +0000 (11:39 +0100)
Call gst_rtspsrc_connection_flush (src, FALSE) to reset connections as
non-flushing before sending PAUSE and PLAY with the new npt range. Without this
patch, those commands would fail with EINTR as the connections were still
flushing.

gst/rtsp/gstrtspsrc.c

index 3084087..8eb39e8 100644 (file)
@@ -295,6 +295,7 @@ static gboolean gst_rtspsrc_loop (GstRTSPSrc * src);
 static gboolean gst_rtspsrc_stream_push_event (GstRTSPSrc * src,
     GstRTSPStream * stream, GstEvent * event);
 static gboolean gst_rtspsrc_push_event (GstRTSPSrc * src, GstEvent * event);
+static void gst_rtspsrc_connection_flush (GstRTSPSrc * src, gboolean flush);
 
 typedef struct
 {
@@ -2239,6 +2240,9 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event)
 
   GST_DEBUG_OBJECT (src, "stopped streaming");
 
+  /* stop flushing the rtsp connection so we can send PAUSE/PLAY below */
+  gst_rtspsrc_connection_flush (src, FALSE);
+
   /* copy segment, we need this because we still need the old
    * segment when we close the current segment. */
   memcpy (&seeksegment, &src->segment, sizeof (GstSegment));