[telepathy-gabble/master] use gabble_signal_connect_weak when connecting the closed signal on the channel
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Mon Mar 30 06:17:28 PDT 2009
---
src/ft-manager.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/ft-manager.c b/src/ft-manager.c
index e61821a..91b3ebf 100644
--- a/src/ft-manager.c
+++ b/src/ft-manager.c
@@ -151,22 +151,22 @@ void
gabble_ft_manager_dispose (GObject *object)
{
GabbleFtManager *self = GABBLE_FT_MANAGER (object);
- GList *l;
+ GList *tmp, *l;
if (self->priv->dispose_has_run)
return;
self->priv->dispose_has_run = TRUE;
- for (l = self->priv->channels; l != NULL; l = g_list_next (l))
+ tmp = self->priv->channels;
+ self->priv->channels = NULL;
+
+ for (l = tmp; l != NULL; l = g_list_next (l))
{
- g_signal_handlers_disconnect_matched (l->data,
- G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self);
g_object_unref (l->data);
}
- if (self->priv->channels)
- g_list_free (self->priv->channels);
+ g_list_free (tmp);
if (G_OBJECT_CLASS (gabble_ft_manager_parent_class)->dispose)
G_OBJECT_CLASS (gabble_ft_manager_parent_class)->dispose (object);
@@ -243,7 +243,8 @@ gabble_ft_manager_channel_created (GabbleFtManager *self,
{
GSList *requests = NULL;
- g_signal_connect (chan, "closed", G_CALLBACK (file_channel_closed_cb), self);
+ gabble_signal_connect_weak (chan, "closed",
+ G_CALLBACK (file_channel_closed_cb), G_OBJECT (self));
self->priv->channels = g_list_append (self->priv->channels, chan);
--
1.5.6.5
More information about the telepathy-commits
mailing list