[empathy] account-chooser: rely on the factory to prepare TP_CONNECTION_FEATURE_CAPABILITIES,



commit 5a3861854b566ba034bf9ddc2fd581185dcc2ef1
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Aug 18 12:28:05 2011 +0200

    account-chooser: rely on the factory to prepare TP_CONNECTION_FEATURE_CAPABILITIES,
    
    Also simplify empathy_account_chooser_filter_supports_chatrooms in the
    process.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=656831

 libempathy-gtk/empathy-account-chooser.c |   55 ++++++------------------------
 1 files changed, 11 insertions(+), 44 deletions(-)
---
diff --git a/libempathy-gtk/empathy-account-chooser.c b/libempathy-gtk/empathy-account-chooser.c
index 32b314b..cb9028c 100644
--- a/libempathy-gtk/empathy-account-chooser.c
+++ b/libempathy-gtk/empathy-account-chooser.c
@@ -1016,33 +1016,6 @@ empathy_account_chooser_filter_is_connected (
 	callback (is_connected, callback_data);
 }
 
-typedef struct {
-	EmpathyAccountChooserFilterResultCallback callback;
-	gpointer                                  user_data;
-} FilterCallbackData;
-
-static void
-conn_prepared_cb (GObject *conn,
-		GAsyncResult *result,
-		gpointer user_data)
-{
-	FilterCallbackData *data = user_data;
-	GError             *myerr = NULL;
-	TpCapabilities     *caps;
-
-	if (!tp_proxy_prepare_finish (conn, result, &myerr)) {
-		data->callback (FALSE, data->user_data);
-		g_slice_free (FilterCallbackData, data);
-		return;
-	}
-
-	caps = tp_connection_get_capabilities (TP_CONNECTION (conn));
-	data->callback (tp_capabilities_supports_text_chatrooms (caps),
-			data->user_data);
-
-	g_slice_free (FilterCallbackData, data);
-}
-
 /**
  * empathy_account_chooser_filter_supports_multichat:
  * @account: a #TpAccount
@@ -1063,28 +1036,22 @@ empathy_account_chooser_filter_supports_chatrooms (
 	gpointer                                   user_data)
 {
 	TpConnection       *connection;
-	FilterCallbackData *cb_data;
-	GQuark              features[] = { TP_CONNECTION_FEATURE_CAPABILITIES, 0 };
-
-	if (tp_account_get_connection_status (account, NULL) !=
-		TP_CONNECTION_STATUS_CONNECTED) {
-		callback (FALSE, callback_data);
-		return;
-	}
+	gboolean           supported = FALSE;
+	TpCapabilities     *caps;
 
 	/* check if CM supports multiuser text chat */
 	connection = tp_account_get_connection (account);
-	if (connection == NULL) {
-		callback (FALSE, callback_data);
-		return;
-	}
+	if (connection == NULL)
+		goto out;
+
+	caps = tp_connection_get_capabilities (connection);
+	if (caps == NULL)
+		goto out;
 
-	cb_data = g_slice_new0 (FilterCallbackData);
-	cb_data->callback = callback;
-	cb_data->user_data = callback_data;
+	supported = tp_capabilities_supports_text_chatrooms (caps);
 
-	tp_proxy_prepare_async (connection, features, conn_prepared_cb,
-		cb_data);
+out:
+	callback (supported, callback_data);
 }
 
 gboolean



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