Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-07-15 16:37:59 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-07-15 16:37:59 (GMT)
commiteaf5845b922d67ee9c5506ee7bad01ba12d3f455 (patch)
tree6347deb17ebb0628bfb83cb395213157df4f49a5
parenteb6bf8ecae10abfe6038982268866c750a838097 (diff)
Fix buddy re-appear by actually forgetting about buddies when they go away
-rw-r--r--src/buddy.py2
-rw-r--r--src/presenceservice.py1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/buddy.py b/src/buddy.py
index 4528c6b..3945aed 100644
--- a/src/buddy.py
+++ b/src/buddy.py
@@ -335,6 +335,8 @@ class Buddy(ExportedGObject):
# the Owner can't disappear - that would be silly
if not self._handles and not self._owner:
self.emit('disappeared')
+ # Stop exporting a dbus service
+ self.remove_from_connection()
@dbus.service.signal(_BUDDY_INTERFACE, signature='sou')
def TelepathyHandleRemoved(self, tp_conn_name, tp_conn_path, handle):
diff --git a/src/presenceservice.py b/src/presenceservice.py
index 9c57062..0cc1efb 100644
--- a/src/presenceservice.py
+++ b/src/presenceservice.py
@@ -416,6 +416,7 @@ class PresenceService(ExportedGObject):
def _buddy_disappeared_cb(self, buddy):
if buddy.props.valid:
self._buddy_validity_changed_cb(buddy, False)
+ self._buddies.pop(buddy.props.objid, None)
def _contacts_offline(self, tp, handles):
for handle in handles: