rtpbin: fix a bug handling BUFFERING messages.
authorAlessandro Decina <alessandro.decina@collabora.co.uk>
Mon, 3 May 2010 09:56:58 +0000 (11:56 +0200)
committerAlessandro Decina <alessandro.decina@collabora.co.uk>
Mon, 3 May 2010 09:56:58 +0000 (11:56 +0200)
If a session exists but has no streams, set the min buffering percent to 0
since it means that we haven't received anything for that session yet.

gst/rtpmanager/gstrtpbin.c

index 38f7032..4d38dbf 100644 (file)
@@ -1804,16 +1804,22 @@ gst_rtp_bin_handle_message (GstBin * bin, GstMessage * message)
           GstRtpBinSession *session = (GstRtpBinSession *) sessions->data;
 
           GST_RTP_SESSION_LOCK (session);
-          for (streams = session->streams; streams;
-              streams = g_slist_next (streams)) {
-            GstRtpBinStream *stream = (GstRtpBinStream *) streams->data;
+          if (session->streams) {
+            for (streams = session->streams; streams;
+                streams = g_slist_next (streams)) {
+              GstRtpBinStream *stream = (GstRtpBinStream *) streams->data;
 
-            GST_DEBUG_OBJECT (bin, "stream %p percent %d", stream,
-                stream->percent);
+              GST_DEBUG_OBJECT (bin, "stream %p percent %d", stream,
+                  stream->percent);
 
-            /* find min percent */
-            if (min_percent > stream->percent)
-              min_percent = stream->percent;
+              /* find min percent */
+              if (min_percent > stream->percent)
+                min_percent = stream->percent;
+            }
+          } else {
+            GST_INFO_OBJECT (bin,
+                "session has no streams, setting min_percent to 0");
+            min_percent = 0;
           }
           GST_RTP_SESSION_UNLOCK (session);
         }