[empathy] roster-view: clear the view when disposing



commit e4d1085846020f3522f94e1cb075b7d9417b9cea
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Sep 10 11:14:22 2012 +0200

    roster-view: clear the view when disposing
    
    https://bugzilla.gnome.org/show_bug.cgi?id=683699

 libempathy-gtk/empathy-roster-view.c |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)
---
diff --git a/libempathy-gtk/empathy-roster-view.c b/libempathy-gtk/empathy-roster-view.c
index 8c2c277..a5d1459 100644
--- a/libempathy-gtk/empathy-roster-view.c
+++ b/libempathy-gtk/empathy-roster-view.c
@@ -1046,12 +1046,27 @@ empathy_roster_view_constructed (GObject *object)
 }
 
 static void
+clear_view (EmpathyRosterView *self)
+{
+  g_hash_table_remove_all (self->priv->roster_contacts);
+  g_hash_table_remove_all (self->priv->roster_groups);
+  g_hash_table_remove_all (self->priv->displayed_contacts);
+
+  gtk_container_foreach (GTK_CONTAINER (self),
+      (GtkCallback) gtk_widget_destroy, NULL);
+}
+
+static void
 empathy_roster_view_dispose (GObject *object)
 {
   EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
   void (*chain_up) (GObject *) =
       ((GObjectClass *) empathy_roster_view_parent_class)->dispose;
 
+  /* Start by clearing the view so our internal hash tables are cleared from
+   * objects being destroyed. */
+  clear_view (self);
+
   stop_flashing (self);
 
   empathy_roster_view_set_live_search (self, NULL);
@@ -1377,17 +1392,6 @@ empathy_roster_view_show_offline (EmpathyRosterView *self,
   g_object_notify (G_OBJECT (self), "show-offline");
 }
 
-static void
-clear_view (EmpathyRosterView *self)
-{
-  g_hash_table_remove_all (self->priv->roster_contacts);
-  g_hash_table_remove_all (self->priv->roster_groups);
-  g_hash_table_remove_all (self->priv->displayed_contacts);
-
-  gtk_container_foreach (GTK_CONTAINER (self),
-      (GtkCallback) gtk_widget_destroy, NULL);
-}
-
 void
 empathy_roster_view_show_groups (EmpathyRosterView *self,
     gboolean show)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]