rtspsrc: fix TCP reconnect
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 13 Dec 2012 08:27:14 +0000 (09:27 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 13 Dec 2012 08:30:59 +0000 (09:30 +0100)
Ignore other commands when reconnecting, otherwise the loop function would pause
and the reconnection would not happen. Continue looping after doing a reconnect
so that we have a chance to actually read the new data.

gst/rtsp/gstrtspsrc.c

index 5b2ee41..05f532d 100644 (file)
@@ -4147,6 +4147,10 @@ gst_rtspsrc_loop_send_cmd (GstRTSPSrc * src, gint cmd, gint mask)
 
   GST_OBJECT_LOCK (src);
   old = src->pending_cmd;
+  if (old == CMD_RECONNECT) {
+    GST_DEBUG_OBJECT (src, "ignore, we were reconnecting");
+    cmd = CMD_RECONNECT;
+  }
   if (old != CMD_WAIT) {
     src->pending_cmd = CMD_WAIT;
     GST_OBJECT_UNLOCK (src);
@@ -6561,7 +6565,7 @@ gst_rtspsrc_thread (GstRTSPSrc * src)
 
   GST_OBJECT_LOCK (src);
   cmd = src->pending_cmd;
-  if (cmd == CMD_PLAY || cmd == CMD_LOOP)
+  if (cmd == CMD_RECONNECT || CMD_PLAY || cmd == CMD_LOOP)
     src->pending_cmd = CMD_LOOP;
   else
     src->pending_cmd = CMD_WAIT;