changeset 26337:dd45432d6b69

Use purple_media_get_tee instead of purple_media_get_sink.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Sun, 22 Mar 2009 21:27:43 +0000
parents 775920086761
children 754be87047dc
files pidgin/gtkmedia.c
diffstat 1 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Sun Mar 22 21:02:48 2009 +0000
+++ b/pidgin/gtkmedia.c	Sun Mar 22 21:27:43 2009 +0000
@@ -677,10 +677,22 @@
 	} else if (state == PURPLE_MEDIA_STATE_CONNECTED &&
 			purple_media_get_session_type(media, sid) &
 			PURPLE_MEDIA_RECV_AUDIO) {
-		GstElement *media_sink = purple_media_get_sink(media,
-				sid, name);
-		gtkmedia->priv->recv_level = gst_bin_get_by_name(
-				GST_BIN(media_sink), "recvlevel");
+		GstElement *tee = purple_media_get_tee(media, sid, name);
+		GstIterator *iter = gst_element_iterate_src_pads(tee);
+		GstPad *sinkpad;
+		if (gst_iterator_next(iter, (gpointer)&sinkpad)
+				 == GST_ITERATOR_OK) {
+			GstPad *peer = gst_pad_get_peer(sinkpad);
+			if (peer != NULL) {
+				gtkmedia->priv->recv_level =
+						gst_bin_get_by_name(
+						GST_BIN(GST_OBJECT_PARENT(
+						peer)), "recvlevel");
+				gst_object_unref(peer);
+			}
+			gst_object_unref(sinkpad);
+		}
+		gst_iterator_free(iter);
 	}
 }