[empathy: 5/7] presence-manager: add a dispose function and use tp_clear_*
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy: 5/7] presence-manager: add a dispose function and use tp_clear_*
- Date: Wed, 26 Jan 2011 08:30:46 +0000 (UTC)
commit 273fee5fe68846380765235aae3d9761c349f50c
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date: Tue Jan 25 12:21:48 2011 +0100
presence-manager: add a dispose function and use tp_clear_*
libempathy/empathy-presence-manager.c | 37 ++++++++++++++++++++------------
1 files changed, 23 insertions(+), 14 deletions(-)
---
diff --git a/libempathy/empathy-presence-manager.c b/libempathy/empathy-presence-manager.c
index 558421a..48cf5a6 100644
--- a/libempathy/empathy-presence-manager.c
+++ b/libempathy/empathy-presence-manager.c
@@ -274,34 +274,42 @@ state_change_cb (EmpathyConnectivity *connectivity,
}
static void
-presence_manager_finalize (GObject *object)
+presence_manager_dispose (GObject *object)
{
EmpathyPresenceManager *self = (EmpathyPresenceManager *) object;
- g_free (self->priv->status);
- g_free (self->priv->requested_status_message);
-
- if (self->priv->gs_proxy)
- g_object_unref (self->priv->gs_proxy);
+ tp_clear_object (&self->priv->gs_proxy);
- g_signal_handler_disconnect (self->priv->connectivity,
- self->priv->state_change_signal_id);
- self->priv->state_change_signal_id = 0;
+ if (self->priv->state_change_signal_id != 0)
+ {
+ g_signal_handler_disconnect (self->priv->connectivity,
+ self->priv->state_change_signal_id);
+ self->priv->state_change_signal_id = 0;
+ }
if (self->priv->manager != NULL)
{
g_signal_handler_disconnect (self->priv->manager,
self->priv->most_available_presence_changed_id);
- g_object_unref (self->priv->manager);
+ tp_clear_object (&self->priv->manager);
}
- g_object_unref (self->priv->connectivity);
-
- g_hash_table_destroy (self->priv->connect_times);
- self->priv->connect_times = NULL;
+ tp_clear_object (&self->priv->connectivity);
+ tp_clear_pointer (&self->priv->connect_times, g_hash_table_unref);
next_away_stop (EMPATHY_PRESENCE_MANAGER (object));
+ G_OBJECT_CLASS (empathy_presence_manager_parent_class)->dispose (object);
+}
+
+static void
+presence_manager_finalize (GObject *object)
+{
+ EmpathyPresenceManager *self = (EmpathyPresenceManager *) object;
+
+ g_free (self->priv->status);
+ g_free (self->priv->requested_status_message);
+
G_OBJECT_CLASS (empathy_presence_manager_parent_class)->finalize (object);
}
@@ -398,6 +406,7 @@ empathy_presence_manager_class_init (EmpathyPresenceManagerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->dispose = presence_manager_dispose;
object_class->finalize = presence_manager_finalize;
object_class->constructor = presence_manager_constructor;
object_class->get_property = presence_manager_get_property;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]