aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-persona-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy-gtk/empathy-persona-store.c')
-rw-r--r--libempathy-gtk/empathy-persona-store.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/libempathy-gtk/empathy-persona-store.c b/libempathy-gtk/empathy-persona-store.c
index 75827c572..aea205932 100644
--- a/libempathy-gtk/empathy-persona-store.c
+++ b/libempathy-gtk/empathy-persona-store.c
@@ -995,15 +995,22 @@ empathy_persona_store_set_individual (EmpathyPersonaStore *self,
/* Remove the old individual */
if (priv->individual != NULL)
{
- GList *personas, *l;
+ GeeSet *personas;
+ GeeIterator *iter;
g_signal_handlers_disconnect_by_func (priv->individual,
(GCallback) individual_personas_changed_cb, self);
/* Disconnect from and remove all personas belonging to this individual */
personas = folks_individual_get_personas (priv->individual);
- for (l = personas; l != NULL; l = l->next)
- remove_persona_and_disconnect (self, FOLKS_PERSONA (l->data));
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
+ {
+ FolksPersona *persona = gee_iterator_get (iter);
+ remove_persona_and_disconnect (self, persona);
+ g_clear_object (&persona);
+ }
+ g_clear_object (&iter);
g_object_unref (priv->individual);
}
@@ -1013,7 +1020,8 @@ empathy_persona_store_set_individual (EmpathyPersonaStore *self,
/* Add the new individual */
if (individual != NULL)
{
- GList *personas, *l;
+ GeeSet *personas;
+ GeeIterator *iter;
g_object_ref (individual);
@@ -1021,9 +1029,16 @@ empathy_persona_store_set_individual (EmpathyPersonaStore *self,
(GCallback) individual_personas_changed_cb, self);
/* Add pre-existing Personas */
+
personas = folks_individual_get_personas (individual);
- for (l = personas; l != NULL; l = l->next)
- add_persona_and_connect (self, FOLKS_PERSONA (l->data));
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
+ {
+ FolksPersona *persona = gee_iterator_get (iter);
+ add_persona_and_connect (self, persona);
+ g_clear_object (&persona);
+ }
+ g_clear_object (&iter);
}
g_object_notify (G_OBJECT (self), "individual");