diff pidgin/gtkmedia.c @ 26401:7909c74618fc

Fix audio levels.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 20 Mar 2009 08:10:26 +0000
parents cb3c6ec9291e
children 065d865e7dd1
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Fri Mar 20 06:49:55 2009 +0000
+++ b/pidgin/gtkmedia.c	Fri Mar 20 08:10:26 2009 +0000
@@ -324,7 +324,7 @@
 	if (message->type != GST_MESSAGE_ELEMENT)
 		return TRUE;
 
-	if (gst_structure_has_name(
+	if (!gst_structure_has_name(
 			gst_message_get_structure(message), "level"))
 		return TRUE;
 
@@ -612,6 +612,10 @@
 		gtk_widget_show(gtkmedia->priv->recv_progress);
 	}
 	if (type & PURPLE_MEDIA_SEND_AUDIO) {
+		GstElement *media_src = purple_media_get_src(media, sid);
+		gtkmedia->priv->send_level = gst_bin_get_by_name(
+				GST_BIN(media_src), "sendlevel");
+
 		gtkmedia->priv->send_progress = gtk_progress_bar_new();
 		gtk_widget_set_size_request(gtkmedia->priv->send_progress, 320, 10);
 		gtk_box_pack_end(GTK_BOX(send_widget),
@@ -675,6 +679,13 @@
 	} else if (type == PURPLE_MEDIA_STATE_CHANGED_NEW &&
 			sid != NULL && name != NULL) {
 		pidgin_media_ready_cb(media, gtkmedia, sid);
+	} else if (type == PURPLE_MEDIA_STATE_CHANGED_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");
 	}
 }