rtsp-client: changed session media iteration
authorDavid Svensson Fors <davidsf@axis.com>
Tue, 12 Jun 2012 12:33:35 +0000 (14:33 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 14 Jun 2012 08:14:06 +0000 (10:14 +0200)
In client_unlink_session: now don't iterate in session->medias
list where items are removed by gst_rtsp_session_release_media.
Instead, repeatedly remove the first item.

gst/rtsp-server/rtsp-client.c

index a70d388..49ad173 100644 (file)
@@ -114,15 +114,13 @@ gst_rtsp_client_init (GstRTSPClient * client)
 static void
 client_unlink_session (GstRTSPClient * client, GstRTSPSession * session)
 {
-  GList *medias;
-
   /* unlink all media managed in this session */
-  for (medias = session->medias; medias; medias = g_list_next (medias)) {
-    GstRTSPSessionMedia *media = medias->data;
+  while (g_list_length (session->medias) > 0) {
+    GstRTSPSessionMedia *media = g_list_first (session->medias)->data;
 
     gst_rtsp_session_media_set_state (media, GST_STATE_NULL);
     unlink_session_streams (client, session, media);
-    /* unmanage the media in the session. */
+    /* unmanage the media in the session. this will modify session->medias */
     gst_rtsp_session_release_media (session, media);
   }
 }