aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-individual-store-manager.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-11-22 17:04:40 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-11-24 19:29:03 +0800
commit70ec5dfc46d6177c74139ad84e6a74f521e8b374 (patch)
treef4dcf03134f55bb8929ca1675fceef67f3cee4a7 /libempathy-gtk/empathy-individual-store-manager.c
parentf13e0c152b9de168c88f6ebde45c8e35e4df4934 (diff)
downloadgsoc2013-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.c23
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,