summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2013-09-17 15:00:30 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2013-09-18 08:08:42 +0200
commit213e1f382a148ab6d99520303bf99939a1b730d7 (patch)
treee366b4f9d1696db3022c9877e608722f872f2916
parentadc09e9b0cadf015c399942a5c646e111a2c7aad (diff)
connection: factor out add_optionnal_connection_interfaces()
So we call tp_base_connection_add_interfaces() only once with all the extra interfaces. https://bugs.freedesktop.org/show_bug.cgi?id=69466
-rw-r--r--src/connection.c46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/connection.c b/src/connection.c
index 86828d7..2030500 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -174,35 +174,37 @@ protocol_info_supports_mail_notification (PurplePluginProtocolInfo *prpl_info)
}
static void
+add_optional_connection_interfaces (GPtrArray *ifaces,
+ PurplePluginProtocolInfo *prpl_info)
+{
+ if (protocol_info_supports_avatar (prpl_info))
+ g_ptr_array_add (ifaces,
+ TP_IFACE_CONNECTION_INTERFACE_AVATARS);
+
+ if (protocol_info_supports_blocking (prpl_info))
+ g_ptr_array_add (ifaces,
+ TP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING);
+
+ if (protocol_info_supports_mail_notification (prpl_info))
+ g_ptr_array_add (ifaces,
+ HAZE_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION);
+}
+
+static void
connected_cb (PurpleConnection *pc)
{
TpBaseConnection *base_conn = PC_GET_BASE_CONN (pc);
HazeConnection *conn = HAZE_CONNECTION (base_conn);
PurplePluginProtocolInfo *prpl_info = HAZE_CONNECTION_GET_PRPL_INFO (conn);
+ GPtrArray *ifaces;
- if (protocol_info_supports_avatar (prpl_info))
- {
- static const gchar *avatar_ifaces[] = {
- TP_IFACE_CONNECTION_INTERFACE_AVATARS,
- NULL };
- tp_base_connection_add_interfaces (base_conn, avatar_ifaces);
- }
+ ifaces = g_ptr_array_new ();
+ add_optional_connection_interfaces (ifaces, prpl_info);
+ g_ptr_array_add (ifaces, NULL);
- if (protocol_info_supports_blocking (prpl_info))
- {
- static const gchar *blocking_ifaces[] = {
- TP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING,
- NULL };
- tp_base_connection_add_interfaces (base_conn, blocking_ifaces);
- }
-
- if (protocol_info_supports_mail_notification (prpl_info))
- {
- static const gchar *mail_ifaces[] = {
- HAZE_IFACE_CONNECTION_INTERFACE_MAIL_NOTIFICATION,
- NULL };
- tp_base_connection_add_interfaces (base_conn, mail_ifaces);
- }
+ tp_base_connection_add_interfaces (base_conn,
+ (const gchar **) ifaces->pdata);
+ g_ptr_array_unref (ifaces);
tp_base_contact_list_set_list_received (
(TpBaseContactList *) conn->contact_list);