]> git.0d.be Git - empathy.git/commitdiff
new-call-dialog: rely on the factory to prepare TP_CONNECTION_FEATURE_CAPABILITIES
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 18 Aug 2011 14:13:10 +0000 (16:13 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 19 Aug 2011 07:26:26 +0000 (09:26 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=656831

libempathy-gtk/empathy-new-call-dialog.c

index 01de68df22470145fedaf1855b8ff9a18466068d..f552a6601e2f6d3384fb07e78e343f0aa5616b72 100644 (file)
@@ -106,20 +106,26 @@ out:
 }
 
 static void
-conn_prepared_cb (GObject *conn,
-    GAsyncResult *result,
-    gpointer user_data)
+empathy_new_call_dialog_account_filter (EmpathyContactSelectorDialog *dialog,
+    EmpathyAccountChooserFilterResultCallback callback,
+    gpointer callback_data,
+    TpAccount *account)
 {
-  FilterCallbackData *data = user_data;
-  GError *myerr = NULL;
+  TpConnection *connection;
+  gboolean supported = FALSE;
+  guint i;
   TpCapabilities *caps;
   GPtrArray *classes;
-  guint i;
 
-  if (!tp_proxy_prepare_finish (conn, result, &myerr))
+  /* check if CM supports calls */
+  connection = tp_account_get_connection (account);
+  if (connection == NULL)
+      goto out;
+
+  caps = tp_connection_get_capabilities (connection);
+  if (caps == NULL)
       goto out;
 
-  caps = tp_connection_get_capabilities (TP_CONNECTION (conn));
   classes = tp_capabilities_get_channel_classes (caps);
 
   for (i = 0; i < classes->len; i++)
@@ -141,45 +147,12 @@ conn_prepared_cb (GObject *conn,
           TP_HANDLE_TYPE_CONTACT)
         continue;
 
-      data->callback (TRUE, data->user_data);
-      g_slice_free (FilterCallbackData, data);
-      return;
+      supported = TRUE;
+      break;
     }
 
 out:
-  data->callback (FALSE, data->user_data);
-  g_slice_free (FilterCallbackData, data);
-}
-
-static void
-empathy_new_call_dialog_account_filter (EmpathyContactSelectorDialog *dialog,
-    EmpathyAccountChooserFilterResultCallback callback,
-    gpointer callback_data,
-    TpAccount *account)
-{
-  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;
-    }
-
-  /* check if CM supports calls */
-  connection = tp_account_get_connection (account);
-  if (connection == NULL)
-    {
-      callback (FALSE, callback_data);
-      return;
-    }
-
-  cb_data = g_slice_new0 (FilterCallbackData);
-  cb_data->callback = callback;
-  cb_data->user_data = callback_data;
-  tp_proxy_prepare_async (connection, features, conn_prepared_cb, cb_data);
+  callback (supported, callback_data);
 }
 
 static void