aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2009-10-19 20:54:34 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2009-10-19 21:27:38 +0800
commit2ca081a4e27d46599053779c641e4646046f42ae (patch)
treeb1adc06ceda86376e5830be55f20cb8ca652085f
parent09a5b716473a7f57f438b913c4d889798b084461 (diff)
downloadgsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar.gz
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar.bz2
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar.lz
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar.xz
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.tar.zst
gsoc2013-empathy-2ca081a4e27d46599053779c641e4646046f42ae.zip
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).
-rw-r--r--libempathy-gtk/empathy-contact-list-store.c8
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 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);
}