[next] telepathy-glib: base-protocol: get_avatar_details() now return a boolean

Guillaume Desmottes gdesmott at kemper.freedesktop.org
Thu May 15 04:51:00 PDT 2014


Module: telepathy-glib
Branch: next
Commit: c6cd0c450c594e7c09372c9b052d7d9ec1c94191
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=c6cd0c450c594e7c09372c9b052d7d9ec1c94191

Author: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
Date:   Thu May 15 11:12:46 2014 +0200

base-protocol: get_avatar_details() now return a boolean

This allows Haze to indicate that it doesn't actually support avatars for some
protocols.

Fix https://bugs.freedesktop.org/show_bug.cgi?id=78381

---

 examples/cm/echo-message-parts/protocol.c |    4 +++-
 telepathy-glib/base-protocol.c            |    9 +++++----
 telepathy-glib/base-protocol.h            |    2 +-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/examples/cm/echo-message-parts/protocol.c b/examples/cm/echo-message-parts/protocol.c
index d18f8a4..5c1c294 100644
--- a/examples/cm/echo-message-parts/protocol.c
+++ b/examples/cm/echo-message-parts/protocol.c
@@ -165,7 +165,7 @@ get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED,
     }
 }
 
-static void
+static gboolean
 get_avatar_details (TpBaseProtocol *self,
     GStrv *supported_mime_types,
     guint *min_height,
@@ -199,6 +199,8 @@ get_avatar_details (TpBaseProtocol *self,
 
   if (max_bytes != NULL)
     *max_bytes = 37748736;
+
+  return TRUE;
 }
 
 static GStrv
diff --git a/telepathy-glib/base-protocol.c b/telepathy-glib/base-protocol.c
index e18507d..23f50b4 100644
--- a/telepathy-glib/base-protocol.c
+++ b/telepathy-glib/base-protocol.c
@@ -404,6 +404,8 @@ tp_cm_param_filter_string_nonempty (const TpCMParamSpec *paramspec,
  * Signature of a virtual method to get the supported avatar details for the
  * protocol implemented by @self.
  *
+ * Returns: %TRUE if @self actually supports avatars and all the variables
+ * have been to set a meaningful value, %FALSE otherwise
  * Since: 0.13.7
  */
 
@@ -682,8 +684,7 @@ tp_base_protocol_constructed (GObject *object)
       self->priv->vcard_field = g_strdup ("");
     }
 
-  if (cls->get_avatar_details != NULL)
-    {
+  if (cls->get_avatar_details != NULL &&
       (cls->get_avatar_details) (self,
           &self->priv->avatar_specs.supported_mime_types,
           &self->priv->avatar_specs.min_height,
@@ -692,8 +693,8 @@ tp_base_protocol_constructed (GObject *object)
           &self->priv->avatar_specs.rec_width,
           &self->priv->avatar_specs.max_height,
           &self->priv->avatar_specs.max_width,
-          &self->priv->avatar_specs.max_bytes);
-
+          &self->priv->avatar_specs.max_bytes))
+    {
       object_skeleton_take_svc_interface (skel,
           TP_TYPE_SVC_PROTOCOL_INTERFACE_AVATARS1);
     }
diff --git a/telepathy-glib/base-protocol.h b/telepathy-glib/base-protocol.h
index e77ea08..c00701d 100644
--- a/telepathy-glib/base-protocol.h
+++ b/telepathy-glib/base-protocol.h
@@ -127,7 +127,7 @@ typedef void (*TpBaseProtocolGetConnectionDetailsFunc) (TpBaseProtocol *self,
     gchar **english_name,
     gchar **vcard_field);
 
-typedef void (*TpBaseProtocolGetAvatarDetailsFunc) (TpBaseProtocol *self,
+typedef gboolean (*TpBaseProtocolGetAvatarDetailsFunc) (TpBaseProtocol *self,
     GStrv *supported_mime_types,
     guint *min_height,
     guint *min_width,



More information about the telepathy-commits mailing list