diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-11-22 17:04:40 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-11-24 19:29:03 +0800 |
commit | 70ec5dfc46d6177c74139ad84e6a74f521e8b374 (patch) | |
tree | f4dcf03134f55bb8929ca1675fceef67f3cee4a7 /libempathy-gtk/empathy-individual-store-manager.c | |
parent | f13e0c152b9de168c88f6ebde45c8e35e4df4934 (diff) | |
download | gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar.gz gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar.bz2 gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar.lz gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar.xz gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.tar.zst gsoc2013-empathy-70ec5dfc46d6177c74139ad84e6a74f521e8b374.zip |
add initial_loading() as a virtual method
This allows us to remove setup_idle_id as a protected variable.
https://bugzilla.gnome.org/show_bug.cgi?id=663387
Diffstat (limited to 'libempathy-gtk/empathy-individual-store-manager.c')
-rw-r--r-- | libempathy-gtk/empathy-individual-store-manager.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/libempathy-gtk/empathy-individual-store-manager.c b/libempathy-gtk/empathy-individual-store-manager.c index 72ddab61b..03841f175 100644 --- a/libempathy-gtk/empathy-individual-store-manager.c +++ b/libempathy-gtk/empathy-individual-store-manager.c @@ -50,6 +50,7 @@ struct _EmpathyIndividualStoreManagerPriv { EmpathyIndividualManager *manager; + gboolean setup_idle_id; }; enum @@ -136,7 +137,7 @@ individual_store_manager_manager_setup (gpointer user_data) g_list_free (individuals); } - store->setup_idle_id = 0; + self->priv->setup_idle_id = 0; return FALSE; } @@ -151,8 +152,8 @@ individual_store_manager_set_individual_manager ( self->priv->manager = g_object_ref (manager); /* Let a chance to have all properties set before populating */ - store->setup_idle_id = g_idle_add (individual_store_manager_manager_setup, - self); + self->priv->setup_idle_id = g_idle_add ( + individual_store_manager_manager_setup, self); } static void @@ -203,6 +204,12 @@ individual_store_manager_dispose (GObject *object) g_clear_object (&self->priv->manager); } + if (self->priv->setup_idle_id != 0) + { + g_source_remove (self->priv->setup_idle_id); + self->priv->setup_idle_id = 0; + } + G_OBJECT_CLASS (empathy_individual_store_manager_parent_class)->dispose ( object); } @@ -262,6 +269,15 @@ individual_store_manager_reload_individuals (EmpathyIndividualStore *store) g_list_free (contacts); } +static gboolean +individual_store_manager_initial_loading (EmpathyIndividualStore *store) +{ + EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER ( + store); + + return self->priv->setup_idle_id != 0; +} + static void empathy_individual_store_manager_class_init ( EmpathyIndividualStoreManagerClass *klass) @@ -275,6 +291,7 @@ empathy_individual_store_manager_class_init ( object_class->set_property = individual_store_manager_set_property; store_class->reload_individuals = individual_store_manager_reload_individuals; + store_class->initial_loading = individual_store_manager_initial_loading; g_object_class_install_property (object_class, PROP_INDIVIDUAL_MANAGER, |