changeset 25731:ba609f368dc8

Fix GStreamer assertion.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 21 Aug 2008 00:53:58 +0000
parents e4261bc6788d
children d6bda7b63eac
files libpurple/media.c pidgin/gtkmedia.c
diffstat 2 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/media.c	Wed Aug 20 22:49:35 2008 +0000
+++ b/libpurple/media.c	Thu Aug 21 00:53:58 2008 +0000
@@ -269,6 +269,9 @@
 	}
 
 	if (priv->pipeline) {
+		GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(priv->pipeline));
+		gst_bus_remove_signal_watch(bus);
+		gst_object_unref(bus);
 		gst_element_set_state(priv->pipeline, GST_STATE_NULL);
 		gst_object_unref(priv->pipeline);
 	}
@@ -619,7 +622,8 @@
 		media->priv->pipeline = gst_pipeline_new(media->priv->name);
 		bus = gst_pipeline_get_bus(GST_PIPELINE(media->priv->pipeline));
 		gst_bus_add_signal_watch(GST_BUS(bus));
-		gst_bus_add_watch(bus, media_bus_call, media);
+		g_signal_connect(G_OBJECT(bus), "message",
+				G_CALLBACK(media_bus_call), media);
 		gst_object_unref(bus);
 
 		gst_bin_add(GST_BIN(media->priv->pipeline), GST_ELEMENT(media->priv->conference));
--- a/pidgin/gtkmedia.c	Wed Aug 20 22:49:35 2008 +0000
+++ b/pidgin/gtkmedia.c	Thu Aug 21 00:53:58 2008 +0000
@@ -444,11 +444,9 @@
 		gtk_widget_show(gtkmedia->priv->display);
 
 	bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
-	if (audiorecvbin || audiosendbin) {
-		gst_bus_add_signal_watch(GST_BUS(bus));
-		g_signal_connect(G_OBJECT(bus), "message",
+	if (audiorecvbin || audiosendbin)
+		g_signal_connect(G_OBJECT(bus), "message::element",
 				G_CALLBACK(level_message_cb), gtkmedia);
-	}
 	if (videorecvbin || videosendbin)
 		gst_bus_set_sync_handler(bus, (GstBusSyncHandler)create_window, gtkmedia);
 	gst_object_unref(bus);