[Telepathy-commits] [telepathy-glib/master] fd.o#20646: TpChannel: when adding contacts to one of the Group sets, remove them from both of the others

Simon McVittie simon.mcvittie at collabora.co.uk
Fri Mar 13 06:31:43 PDT 2009


---
 telepathy-glib/channel-group.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/telepathy-glib/channel-group.c b/telepathy-glib/channel-group.c
index fabde57..ba17108 100644
--- a/telepathy-glib/channel-group.c
+++ b/telepathy-glib/channel-group.c
@@ -459,6 +459,8 @@ _tp_channel_group_set_one_lp (TpChannel *self,
   g_assert (self->priv->group_local_pending != NULL);
 
   tp_intset_add (self->priv->group_local_pending, handle);
+  tp_intset_remove (self->priv->group_members, handle);
+  tp_intset_remove (self->priv->group_remote_pending, handle);
 
   if (actor == 0 && reason == TP_CHANNEL_GROUP_CHANGE_REASON_NONE &&
       (message == NULL || message[0] == '\0'))
@@ -840,6 +842,8 @@ handle_members_changed (TpChannel *self,
         }
 
       tp_intset_add (self->priv->group_members, handle);
+      tp_intset_remove (self->priv->group_local_pending, handle);
+      tp_intset_remove (self->priv->group_remote_pending, handle);
     }
 
   for (i = 0; i < local_pending->len; i++)
@@ -895,6 +899,8 @@ handle_members_changed (TpChannel *self,
         }
 
       tp_intset_add (self->priv->group_remote_pending, handle);
+      tp_intset_remove (self->priv->group_members, handle);
+      tp_intset_remove (self->priv->group_local_pending, handle);
     }
 
   for (i = 0; i < removed->len; i++)
-- 
1.5.6.5




More information about the telepathy-commits mailing list