[Telepathy-commits] [telepathy-salut/master] gibber-oob-file-transfer: disconnect the channel watcher when disposing so input_channel_readable_cb isn't called after object disposing
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Wed Nov 12 09:01:11 PST 2008
---
lib/gibber/gibber-oob-file-transfer.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index b76a3ec..4894eb1 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -63,6 +63,8 @@ struct _GibberOobFileTransferPrivate
guint64 transferred_bytes;
/* whether the transfer has been cancelled */
gboolean cancelled;
+ /* the watch id on the channel */
+ guint watch_id;
};
static void
@@ -108,6 +110,9 @@ gibber_oob_file_transfer_finalize (GObject *object)
{
GibberOobFileTransfer *self = GIBBER_OOB_FILE_TRANSFER (object);
+ if (self->priv->watch_id != 0)
+ g_source_remove (self->priv->watch_id);
+
if (self->priv->server != NULL)
{
soup_server_quit (self->priv->server);
@@ -626,8 +631,8 @@ http_server_wrote_chunk_cb (SoupMessage *msg,
self->priv->cancelled ? "cancelled" : "not cancelled");
if (self->priv->channel && !self->priv->cancelled)
{
- g_io_add_watch (self->priv->channel, G_IO_IN | G_IO_HUP,
- input_channel_readable_cb, self);
+ self->priv->watch_id = g_io_add_watch (self->priv->channel,
+ G_IO_IN | G_IO_HUP, input_channel_readable_cb, self);
}
}
--
1.5.6.5
More information about the Telepathy-commits
mailing list