[farsight2/master] msnconnection: Split dispose and finalize

Olivier Crête olivier.crete at collabora.co.uk
Tue Jul 14 09:50:38 PDT 2009


---
 gst/fsmsnconference/fs-msn-connection.c |   29 ++++++++++++++---------------
 1 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/gst/fsmsnconference/fs-msn-connection.c b/gst/fsmsnconference/fs-msn-connection.c
index 7bca264..95c3640 100644
--- a/gst/fsmsnconference/fs-msn-connection.c
+++ b/gst/fsmsnconference/fs-msn-connection.c
@@ -92,6 +92,7 @@ G_DEFINE_TYPE(FsMsnConnection, fs_msn_connection, G_TYPE_OBJECT);
 static GObjectClass *parent_class = NULL;
 
 static void fs_msn_connection_dispose (GObject *object);
+static void fs_msn_connection_finalize (GObject *object);
 
 
 static gboolean fs_msn_connection_attempt_connection_locked (
@@ -162,6 +163,7 @@ fs_msn_connection_class_init (FsMsnConnectionClass *klass)
       G_TYPE_NONE, 0);
 
   gobject_class->dispose = fs_msn_connection_dispose;
+  gobject_class->finalize = fs_msn_connection_finalize;
 }
 
 static void
@@ -183,17 +185,9 @@ static void
 fs_msn_connection_dispose (GObject *object)
 {
   FsMsnConnection *self = FS_MSN_CONNECTION (object);
-  gint i;
 
   FS_MSN_CONNECTION_LOCK(self);
 
-  /* If dispose did already run, return. */
-  if (self->disposed)
-  {
-    FS_MSN_CONNECTION_UNLOCK(self);
-    return;
-  }
-
   if (self->polling_thread)
   {
     gst_poll_set_flushing (self->poll, TRUE);
@@ -201,6 +195,17 @@ fs_msn_connection_dispose (GObject *object)
     self->polling_thread = NULL;
   }
 
+  FS_MSN_CONNECTION_UNLOCK(self);
+
+  parent_class->dispose (object);
+}
+
+static void
+fs_msn_connection_finalize (GObject *object)
+{
+  FsMsnConnection *self = FS_MSN_CONNECTION (object);
+  gint i;
+
   if (self->local_recipient_id)
     g_free (self->local_recipient_id);
   if (self->remote_recipient_id)
@@ -212,13 +217,7 @@ fs_msn_connection_dispose (GObject *object)
     close (g_array_index(self->pollfds, FsMsnPollFD *, i)->pollfd.fd);
   g_array_free (self->pollfds, TRUE);
 
-
-  /* Make sure dispose does not run twice. */
-  self->disposed = TRUE;
-
-  parent_class->dispose (object);
-
-  FS_MSN_CONNECTION_UNLOCK(self);
+  parent_class->finalize (object);
 }
 
 /**
-- 
1.5.6.5




More information about the farsight-commits mailing list