libpurple/media.c

branch
soc.2008.vv
changeset 23744
7b6b91b7e862
parent 23742
a3eda57d01b5
child 23745
091a506a7018
--- a/libpurple/media.c	Fri Jun 27 18:01:13 2008 +0000
+++ b/libpurple/media.c	Fri Jun 27 18:44:49 2008 +0000
@@ -436,15 +436,22 @@
 purple_media_get_elements(PurpleMedia *media, GstElement **audio_src, GstElement **audio_sink,
                                                   GstElement **video_src, GstElement **video_sink)
 {
-	 if (audio_src) 
-		g_object_get(G_OBJECT(media), "audio-src", *audio_src, NULL);
-	 if (audio_sink) 
-		g_object_get(G_OBJECT(media), "audio-sink", *audio_sink, NULL);
-	 if (video_src) 
-		g_object_get(G_OBJECT(media), "video-src", *video_src, NULL);
-	 if (video_sink) 
-		g_object_get(G_OBJECT(media), "video-sink", *video_sink, NULL);
+	GList *values = g_hash_table_get_values(media->priv->sessions);
+
+	for (; values; values = values->next) {
+		PurpleMediaSession *session = (PurpleMediaSession*)values->data;
 
+		if (session->type & PURPLE_MEDIA_SEND_AUDIO && audio_src)
+			*audio_src = session->src;
+		if (session->type & PURPLE_MEDIA_RECV_AUDIO && audio_sink)
+			*audio_sink = session->sink;
+		if (session->type & PURPLE_MEDIA_SEND_VIDEO && video_src)
+			*video_src = session->src;
+		if (session->type & PURPLE_MEDIA_RECV_VIDEO && video_sink)
+			*video_sink = session->sink;
+	}
+
+	g_list_free(values);
 }
 
 void 

mercurial