Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/presence
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-07-16 18:00:32 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-07-16 18:00:32 (GMT)
commit1698c297c76ed34238a888fc56267209fd3c9bc0 (patch)
tree696327b3bc20cfc92b1ec404ef59cf5de675d197 /sugar/presence
parenta0ad81b58b59acea3f7f9100025e2fc0be5f53d5 (diff)
Suppress traceback when creating a new buddy object on buddy-disappeared signal
Diffstat (limited to 'sugar/presence')
-rw-r--r--sugar/presence/presenceservice.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py
index a0b60ee..4a92dd3 100644
--- a/sugar/presence/presenceservice.py
+++ b/sugar/presence/presenceservice.py
@@ -169,6 +169,9 @@ class PresenceService(gobject.GObject):
self._objcache[object_path] = obj
return obj
+ def _have_object(self, object_path):
+ return object_path in self._objcache.keys()
+
def _del_object(self, object_path):
"""Fully remove an object from the object cache when it's no longer needed.
"""
@@ -185,7 +188,10 @@ class PresenceService(gobject.GObject):
def _emit_buddy_disappeared_signal(self, object_path):
"""Emit GObject event with presence.buddy.Buddy object"""
- self.emit('buddy-disappeared', self._new_object(object_path))
+ # Don't try to create a new object here if needed; it will probably
+ # fail anyway because the object has already been destroyed in the PS
+ if self._have_object(object_path):
+ self.emit('buddy-disappeared', self._new_object(object_path))
return False
def _buddy_disappeared_cb(self, object_path):