diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2013-09-17 15:00:30 +0200 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2013-09-18 08:08:42 +0200 |
commit | 213e1f382a148ab6d99520303bf99939a1b730d7 (patch) | |
tree | e366b4f9d1696db3022c9877e608722f872f2916 | |
parent | adc09e9b0cadf015c399942a5c646e111a2c7aad (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.c | 46 |
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); |