static void contact_manager_new_connection_cb (EmpathyAccountManager *account_manager, TpConnection *connection, EmpathyContactManager *self) { EmpathyContactManagerPriv *priv = GET_PRIV (self); EmpathyTpContactList *list; if (g_hash_table_lookup (priv->lists, connection)) { return; } DEBUG ("Adding new connection: %s", tp_proxy_get_object_path (TP_PROXY (connection))); list = empathy_tp_contact_list_new (connection); g_hash_table_insert (priv->lists, g_object_ref (connection), list); g_signal_connect (connection, "invalidated", G_CALLBACK (contact_manager_invalidated_cb), self); /* Connect signals */ g_signal_connect (list, "members-changed", G_CALLBACK (contact_manager_members_changed_cb), self); g_signal_connect (list, "pendings-changed", G_CALLBACK (contact_manager_pendings_changed_cb), self); g_signal_connect (list, "groups-changed", G_CALLBACK (contact_manager_groups_changed_cb), self); }
static void contact_manager_status_changed_cb (TpAccount *account, guint old_status, guint new_status, guint reason, gchar *dbus_error_name, GHashTable *details, EmpathyContactManager *self) { EmpathyContactManagerPriv *priv = GET_PRIV (self); EmpathyTpContactList *list; TpConnection *connection; if (new_status == TP_CONNECTION_STATUS_DISCONNECTED) /* No point to start tracking a connection which is about to die */ return; connection = tp_account_get_connection (account); if (connection == NULL || g_hash_table_lookup (priv->lists, connection)) { return; } DEBUG ("Adding new connection: %s", tp_proxy_get_object_path (TP_PROXY (connection))); list = empathy_tp_contact_list_new (connection); g_hash_table_insert (priv->lists, g_object_ref (connection), list); g_signal_connect (connection, "invalidated", G_CALLBACK (contact_manager_invalidated_cb), self); /* Connect signals */ g_signal_connect (list, "members-changed", G_CALLBACK (contact_manager_members_changed_cb), self); g_signal_connect (list, "pendings-changed", G_CALLBACK (contact_manager_pendings_changed_cb), self); g_signal_connect (list, "groups-changed", G_CALLBACK (contact_manager_groups_changed_cb), self); }