[empathy] tp-roomlist: ensure that we stay alive during the create_and_handle_channel async call



commit e3ac85477f053b98531e1b295c498b41659ab0eb
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Fri Sep 16 10:26:42 2011 +0200

    tp-roomlist: ensure that we stay alive during the create_and_handle_channel async call
    
    https://bugzilla.gnome.org/show_bug.cgi?id=658909

 libempathy/empathy-tp-roomlist.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
---
diff --git a/libempathy/empathy-tp-roomlist.c b/libempathy/empathy-tp-roomlist.c
index d66bfc0..79516a5 100644
--- a/libempathy/empathy-tp-roomlist.c
+++ b/libempathy/empathy-tp-roomlist.c
@@ -275,7 +275,7 @@ tp_roomlist_create_channel_cb (GObject *source,
 	if (priv->channel == NULL) {
 		DEBUG ("Error creating channel: %s", error->message);
 		g_error_free (error);
-		return;
+		goto out;
 	}
 
 	g_signal_connect (priv->channel, "invalidated",
@@ -302,6 +302,9 @@ tp_roomlist_create_channel_cb (GObject *source,
 			call_list_rooms_cb, self, NULL, NULL);
 		priv->start_requested = FALSE;
 	}
+
+out:
+	g_object_unref (self);
 }
 
 static void
@@ -348,6 +351,9 @@ tp_roomlist_constructed (GObject *list)
 	req = tp_account_channel_request_new (priv->account, request,
 		TP_USER_ACTION_TIME_CURRENT_TIME);
 
+	/* Ensure we stay alive during the async call */
+	g_object_ref (list);
+
 	tp_account_channel_request_create_and_handle_channel_async (req, NULL,
 		tp_roomlist_create_channel_cb, list);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]