diff options
Diffstat (limited to 'libempathy/empathy-tp-chat.c')
-rw-r--r-- | libempathy/empathy-tp-chat.c | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index d1338f2bf..b33b41e48 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -41,7 +41,6 @@ struct _EmpathyTpChatPrivate { gboolean dispose_has_run; TpAccount *account; - TpConnection *connection; EmpathyContact *user; EmpathyContact *remote_contact; GList *members; @@ -331,7 +330,10 @@ tp_chat_build_message (EmpathyTpChat *self, empathy_message_set_sender (message, self->priv->user); tp_chat_emit_queued_messages (self); } else { - empathy_tp_contact_factory_get_from_handle (self->priv->connection, + TpConnection *connection = tp_channel_borrow_connection ( + (TpChannel *) self); + + empathy_tp_contact_factory_get_from_handle (connection, tp_contact_get_handle (sender), tp_chat_got_sender_cb, message, NULL, G_OBJECT (self)); @@ -572,7 +574,10 @@ tp_chat_state_changed_cb (TpChannel *channel, TpChannelChatState state, EmpathyTpChat *self) { - empathy_tp_contact_factory_get_from_handle (self->priv->connection, handle, + TpConnection *connection = tp_channel_borrow_connection ( + (TpChannel *) self); + + empathy_tp_contact_factory_get_from_handle (connection, handle, tp_chat_state_changed_got_contact_cb, GUINT_TO_POINTER (state), NULL, G_OBJECT (self)); } @@ -823,10 +828,6 @@ tp_chat_dispose (GObject *object) tp_clear_object (&self->priv->account); - if (self->priv->connection != NULL) - g_object_unref (self->priv->connection); - self->priv->connection = NULL; - if (self->priv->remote_contact != NULL) g_object_unref (self->priv->remote_contact); self->priv->remote_contact = NULL; @@ -1141,6 +1142,8 @@ tp_chat_group_members_changed_cb (TpChannel *channel, guint i; ContactRenameData *rename_data; TpHandle old_handle; + TpConnection *connection = tp_channel_borrow_connection ( + (TpChannel *) self); /* Contact renamed */ if (reason == TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED) { @@ -1154,7 +1157,7 @@ tp_chat_group_members_changed_cb (TpChannel *channel, old_handle = g_array_index (removed, guint, 0); rename_data = contact_rename_data_new (old_handle, reason, message); - empathy_tp_contact_factory_get_from_handles (self->priv->connection, + empathy_tp_contact_factory_get_from_handles (connection, added->len, (TpHandle *) added->data, tp_chat_got_renamed_contacts_cb, rename_data, (GDestroyNotify) contact_rename_data_free, @@ -1188,7 +1191,7 @@ tp_chat_group_members_changed_cb (TpChannel *channel, /* Request added contacts */ if (added->len > 0) { - empathy_tp_contact_factory_get_from_handles (self->priv->connection, + empathy_tp_contact_factory_get_from_handles (connection, added->len, (TpHandle *) added->data, tp_chat_got_added_contacts_cb, NULL, NULL, G_OBJECT (self)); @@ -1322,17 +1325,20 @@ tp_chat_constructor (GType type, EmpathyTpChat *self; TpHandle handle; TpChannel *channel; + TpConnection *connection; + object = G_OBJECT_CLASS (empathy_tp_chat_parent_class)->constructor (type, n_props, props); self = (EmpathyTpChat *) object; channel = (TpChannel *) object; - self->priv->connection = g_object_ref (tp_account_get_connection (self->priv->account)); + connection = tp_channel_borrow_connection (channel); + tp_g_signal_connect_object (self, "invalidated", G_CALLBACK (tp_chat_invalidated_cb), self, 0); - g_assert (tp_proxy_is_prepared (self->priv->connection, + g_assert (tp_proxy_is_prepared (connection, TP_CONNECTION_FEATURE_CAPABILITIES)); if (tp_proxy_has_interface_by_id (self, @@ -1342,14 +1348,14 @@ tp_chat_constructor (GType type, /* Get self contact from the group's self handle */ handle = tp_channel_group_get_self_handle (channel); - empathy_tp_contact_factory_get_from_handle (self->priv->connection, + empathy_tp_contact_factory_get_from_handle (connection, handle, tp_chat_got_self_contact_cb, NULL, NULL, object); /* Get initial member contacts */ members = tp_channel_group_get_members (channel); handles = tp_intset_to_array (members); - empathy_tp_contact_factory_get_from_handles (self->priv->connection, + empathy_tp_contact_factory_get_from_handles (connection, handles->len, (TpHandle *) handles->data, tp_chat_got_added_contacts_cb, NULL, NULL, object); @@ -1363,18 +1369,18 @@ tp_chat_constructor (GType type, guint i; /* Get the self contact from the connection's self handle */ - handle = tp_connection_get_self_handle (self->priv->connection); - empathy_tp_contact_factory_get_from_handle (self->priv->connection, + handle = tp_connection_get_self_handle (connection); + empathy_tp_contact_factory_get_from_handle (connection, handle, tp_chat_got_self_contact_cb, NULL, NULL, object); /* Get the remote contact */ handle = tp_channel_get_handle (channel, NULL); - empathy_tp_contact_factory_get_from_handle (self->priv->connection, + empathy_tp_contact_factory_get_from_handle (connection, handle, tp_chat_got_remote_contact_cb, NULL, NULL, object); - caps = tp_connection_get_capabilities (self->priv->connection); + caps = tp_connection_get_capabilities (connection); g_assert (caps != NULL); classes = tp_capabilities_get_channel_classes (caps); @@ -1690,13 +1696,6 @@ empathy_tp_chat_get_account (EmpathyTpChat *self) return self->priv->account; } -TpConnection * -empathy_tp_chat_get_connection (EmpathyTpChat *self) -{ - g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL); - - return tp_channel_borrow_connection ((TpChannel *) self); -} gboolean empathy_tp_chat_is_ready (EmpathyTpChat *self) { |