[Telepathy-commits] [telepathy-salut/master] gibber-file-transfer: keep a ref on the connection

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Fri Nov 21 03:46:51 PST 2008


---
 lib/gibber/gibber-file-transfer.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/lib/gibber/gibber-file-transfer.c b/lib/gibber/gibber-file-transfer.c
index ac81f8d..8be767c 100644
--- a/lib/gibber/gibber-file-transfer.c
+++ b/lib/gibber/gibber-file-transfer.c
@@ -172,7 +172,7 @@ gibber_file_transfer_set_property (GObject *object,
         self->direction = g_value_get_enum (value);
         break;
       case PROP_CONNECTION:
-        self->priv->connection = g_value_get_object (value);
+        self->priv->connection = g_value_dup_object (value);
         if (self->priv->connection != NULL)
           g_signal_connect (self->priv->connection, "received-stanza",
               G_CALLBACK (received_stanza_cb), self);
@@ -190,6 +190,7 @@ gibber_file_transfer_set_property (GObject *object,
 }
 
 static void gibber_file_transfer_finalize (GObject *object);
+static void gibber_file_transfer_dispose (GObject *object);
 
 static void
 gibber_file_transfer_class_init (GibberFileTransferClass *gibber_file_transfer_class)
@@ -199,6 +200,7 @@ gibber_file_transfer_class_init (GibberFileTransferClass *gibber_file_transfer_c
 
   g_type_class_add_private (gibber_file_transfer_class, sizeof (GibberFileTransferPrivate));
 
+  object_class->dispose = gibber_file_transfer_dispose;
   object_class->finalize = gibber_file_transfer_finalize;
 
   object_class->get_property = gibber_file_transfer_get_property;
@@ -297,6 +299,20 @@ gibber_file_transfer_class_init (GibberFileTransferClass *gibber_file_transfer_c
 }
 
 static void
+gibber_file_transfer_dispose (GObject *object)
+{
+  GibberFileTransfer *self = GIBBER_FILE_TRANSFER (object);
+
+  if (self->priv->connection != NULL)
+    {
+      g_object_unref (self->priv->connection);
+      self->priv->connection = NULL;
+    }
+
+  G_OBJECT_CLASS (gibber_file_transfer_parent_class)->dispose (object);
+}
+
+static void
 gibber_file_transfer_finalize (GObject *object)
 {
   GibberFileTransfer *self = GIBBER_FILE_TRANSFER (object);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list