[empathy] empathy-contact-list-store: remove the setup idle cb when store is destroyed



commit 2ca081a4e27d46599053779c641e4646046f42ae
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Oct 19 13:54:34 2009 +0100

    empathy-contact-list-store: remove the setup idle cb when store is destroyed
    
    This ensures that the setup cb isn't called on a destroyed object
    (#598452).

 libempathy-gtk/empathy-contact-list-store.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
---
diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c
index 5edcded..6d6e422 100644
--- a/libempathy-gtk/empathy-contact-list-store.c
+++ b/libempathy-gtk/empathy-contact-list-store.c
@@ -63,6 +63,7 @@ typedef struct {
 	gboolean                    show_active;
 	EmpathyContactListStoreSort sort_criterium;
 	guint                       inhibit_active;
+	guint                       setup_idle_id;
 } EmpathyContactListStorePriv;
 
 typedef struct {
@@ -193,6 +194,7 @@ contact_list_store_iface_setup (gpointer user_data)
 	}
 	g_list_free (contacts);
 
+	priv->setup_idle_id = 0;
 	return FALSE;
 }
 
@@ -206,7 +208,7 @@ contact_list_store_set_contact_list (EmpathyContactListStore *store,
 	priv->list = g_object_ref (list_iface);
 
 	/* Let a chance to have all properties set before populating */
-	g_idle_add (contact_list_store_iface_setup, store);
+	priv->setup_idle_id = g_idle_add (contact_list_store_iface_setup, store);
 }
 
 static void
@@ -313,6 +315,10 @@ contact_list_store_finalize (GObject *object)
 		g_source_remove (priv->inhibit_active);
 	}
 
+	if (priv->setup_idle_id != 0) {
+		g_source_remove (priv->setup_idle_id);
+	}
+
 	G_OBJECT_CLASS (empathy_contact_list_store_parent_class)->finalize (object);
 }
 



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