empathy r1672 - trunk/libempathy
- From: xclaesse svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r1672 - trunk/libempathy
- Date: Tue, 11 Nov 2008 15:25:51 +0000 (UTC)
Author: xclaesse
Date: Tue Nov 11 15:25:51 2008
New Revision: 1672
URL: http://svn.gnome.org/viewvc/empathy?rev=1672&view=rev
Log:
EmpathyTpContactFactory: get avatar requirements before becoming ready.
Modified:
trunk/libempathy/empathy-tp-contact-factory.c
Modified: trunk/libempathy/empathy-tp-contact-factory.c
==============================================================================
--- trunk/libempathy/empathy-tp-contact-factory.c (original)
+++ trunk/libempathy/empathy-tp-contact-factory.c Tue Nov 11 15:25:51 2008
@@ -44,7 +44,7 @@
EmpathyContact *user;
gpointer token;
- const gchar **avatar_mime_types;
+ gchar **avatar_mime_types;
guint avatar_min_width;
guint avatar_min_height;
guint avatar_max_width;
@@ -61,7 +61,17 @@
};
/* Prototypes */
-static void tp_contact_factory_maybe_ready (EmpathyTpContactFactory *tp_factory);
+static void tp_contact_factory_got_avatar_requirements_cb (TpConnection *proxy,
+ const gchar **mime_types,
+ guint min_width,
+ guint min_height,
+ guint max_width,
+ guint max_height,
+ guint max_size,
+ const GError *error,
+ gpointer user_data,
+ GObject *tp_factory);
+static void tp_contact_factory_ready (EmpathyTpContactFactory *tp_factory);
static EmpathyContact *
@@ -739,11 +749,51 @@
empathy_contact_set_handle (priv->user, handle);
- tp_contact_factory_maybe_ready (EMPATHY_TP_CONTACT_FACTORY (tp_factory));
+ /* Get avatar requirements for this connection */
+ tp_cli_connection_interface_avatars_call_get_avatar_requirements (
+ priv->connection,
+ -1,
+ tp_contact_factory_got_avatar_requirements_cb,
+ NULL, NULL,
+ tp_factory);
}
+
+static void
+tp_contact_factory_got_avatar_requirements_cb (TpConnection *proxy,
+ const gchar **mime_types,
+ guint min_width,
+ guint min_height,
+ guint max_width,
+ guint max_height,
+ guint max_size,
+ const GError *error,
+ gpointer user_data,
+ GObject *tp_factory)
+{
+ EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+
+ if (error) {
+ DEBUG ("Failed to get avatar requirements: %s", error->message);
+ /* We'll just leave avatar_mime_types as NULL; the
+ * avatar-setting code can use this as a signal that you can't
+ * set avatars.
+ */
+ } else {
+ priv->avatar_mime_types = g_strdupv ((gchar **)mime_types);
+ priv->avatar_min_width = min_width;
+ priv->avatar_min_height = min_height;
+ priv->avatar_max_width = max_width;
+ priv->avatar_max_height = max_height;
+ priv->avatar_max_size = max_size;
+ }
+
+ tp_contact_factory_ready (EMPATHY_TP_CONTACT_FACTORY (tp_factory));
+}
+
+
static void
-tp_contact_factory_maybe_ready (EmpathyTpContactFactory *tp_factory)
+tp_contact_factory_ready (EmpathyTpContactFactory *tp_factory)
{
EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
GList *l;
@@ -752,11 +802,6 @@
GList *handle_needed_contacts = NULL;
GList *id_needed_contacts = NULL;
- if (empathy_contact_get_handle (priv->user) == 0) {
- DEBUG ("Connection not ready: still waiting for self handle");
- return;
- }
-
DEBUG ("Connection ready");
priv->ready = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]