maiku.vv: 7d13b1d8: Fix GStreamer assertion.

maiku at soc.pidgin.im maiku at soc.pidgin.im
Wed Aug 20 21:50:36 EDT 2008


-----------------------------------------------------------------
Revision: 7d13b1d8a0484fdf843df1925030b2bd026518df
Ancestor: 9c6f09d14c59fb8b3dbe131aa6b023db077afd49
Author: maiku at soc.pidgin.im
Date: 2008-08-21T00:53:58
Branch: im.pidgin.maiku.vv
URL: http://d.pidgin.im/viewmtn/revision/info/7d13b1d8a0484fdf843df1925030b2bd026518df

Modified files:
        libpurple/media.c pidgin/gtkmedia.c

ChangeLog: 

Fix GStreamer assertion.

-------------- next part --------------
============================================================
--- libpurple/media.c	52acd7efe75a802a0df6da69f2dfd1e8114b42ab
+++ libpurple/media.c	c33b513563ce60195791c7f60709ca926fa2f825
@@ -269,6 +269,9 @@ purple_media_finalize (GObject *media)
 	}
 
 	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 @@ purple_media_get_pipeline(PurpleMedia *m
 		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));
============================================================
--- pidgin/gtkmedia.c	4543a7684e0209c8083506313d6db55011afdc68
+++ pidgin/gtkmedia.c	fc5dafd0e42a74ca0411894d4cc2b2029a4d2619
@@ -444,11 +444,9 @@ pidgin_media_accept_cb(PurpleMedia *medi
 		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);


More information about the Commits mailing list