From 2ca081a4e27d46599053779c641e4646046f42ae Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 19 Oct 2009 13:54:34 +0100 Subject: 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 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libempathy-gtk/empathy-contact-list-store.c') diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c index 5edcded95..6d6e422bd 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); } -- cgit v1.2.3