]> git.0d.be Git - empathy.git/commitdiff
account-chooser: rely on the factory to prepare TP_CONNECTION_FEATURE_CAPABILITIES,
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 18 Aug 2011 10:28:05 +0000 (12:28 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 19 Aug 2011 07:26:26 +0000 (09:26 +0200)
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

index 32b314be141d482fde964c12898fba05201e9e5c..cb9028c310afa593687db63851a09a6c6444a1e7 100644 (file)
@@ -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