[empathy: 140/148] Use the new API.



commit f1be1c621d9a331045d756366e59ec7b9a33eac3
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Jun 1 16:44:56 2009 +0200

    Use the new API.
---
 libempathy/empathy-ft-handler.c |   61 ++++++++++++++-------------------------
 1 files changed, 22 insertions(+), 39 deletions(-)

diff --git a/libempathy/empathy-ft-handler.c b/libempathy/empathy-ft-handler.c
index f7ba64f..5b6f97b 100644
--- a/libempathy/empathy-ft-handler.c
+++ b/libempathy/empathy-ft-handler.c
@@ -1047,6 +1047,17 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler,
         g_array_append_val (possible_values, value);
     }
 
+  if (possible_values->len == 0)
+    {
+      /* there are no channel classes with hash support, disable it. */
+      priv->use_hash = FALSE;
+      priv->content_hash_type = TP_FILE_HASH_TYPE_NONE;
+
+      goto out;
+    }
+
+  priv->use_hash = TRUE;
+
   if (possible_values->len == 1)
     {
       priv->content_hash_type = g_array_index (possible_values, guint, 0);
@@ -1064,20 +1075,21 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler,
         priv->content_hash_type = g_array_index (possible_values, guint, 0);
     }
 
-  DEBUG ("Setting content hash type as %u", priv->content_hash_type);
+out:
+  g_array_free (possible_values, TRUE);
+
+  DEBUG ("Hash enabled %s; setting content hash type as %u",
+         priv->use_hash ? "True" : "False", priv->content_hash_type);
 }
 
 static void
-find_ft_channel_class_cb (GList *channel_classes,
+find_ft_channel_classes_cb (GList *channel_classes,
     gpointer user_data)
 {
   CallbacksData *data = user_data;
   EmpathyFTHandler *handler = data->handler;
   GError *myerr = NULL;
 
-  DEBUG ("check if FT without hash is allowed: %s", (channel_classes != NULL) ?
-      "True" : "False");
-
   if (channel_classes == NULL)
     {
       g_set_error_literal (&myerr, EMPATHY_FT_ERROR_QUARK,
@@ -1089,44 +1101,14 @@ find_ft_channel_class_cb (GList *channel_classes,
     }
   else
     {
-      data->callback (handler, NULL, data->user_data);
-    }
-
-  callbacks_data_free (data);
-}
-
-static void
-find_hash_channel_class_cb (GList *channel_classes,
-    gpointer user_data)
-{
-  CallbacksData *data = user_data;
-  EmpathyFTHandler *handler = data->handler;
-  EmpathyFTHandlerPriv *priv = GET_PRIV (handler);
-
-  DEBUG ("check if FT with hash is allowed: %s", (channel_classes != NULL) ?
-      "True" : "False");
-
-  if (channel_classes == NULL)
-    {
-      /* see if we support FT without hash instead */
-      empathy_dispatcher_find_requestable_channel_classes_async
-          (priv->dispatcher, empathy_contact_get_connection (priv->contact),
-           TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, TP_HANDLE_TYPE_CONTACT,
-           find_ft_channel_class_cb, data, NULL);
-
-      return;
-    }
-  else
-    {
-      priv->use_hash = TRUE;
-
-      /* pick a value for the ContentHashType */
+      /* set whether we support hash and the type of it */
       set_content_hash_type_from_classes (handler, channel_classes);
 
       /* get back to the caller now */
       data->callback (handler, NULL, data->user_data);
-      callbacks_data_free (data);
     }
+
+  callbacks_data_free (data);
 }
 
 static void
@@ -1191,7 +1173,8 @@ out:
       empathy_dispatcher_find_requestable_channel_classes_async
           (priv->dispatcher, empathy_contact_get_connection (priv->contact),
            TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, TP_HANDLE_TYPE_CONTACT,
-           find_hash_channel_class_cb, cb_data, "ContentHashType", NULL);
+           find_ft_channel_classes_cb, cb_data,
+           TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentHashType", NULL);
     }
 }
 



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