Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2007-08-08 14:56:24 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-08-10 13:29:15 (GMT)
commit63f7e93ca20311ee4828aadbfabe01daeddbc6a6 (patch)
tree16668a7242b41f4d71f7041730bccc7f86eb79df /src
parentbffae7d0cfddd37633c977ca5a50b65440901bd5 (diff)
Make Buddy-left async through moving code to _text_channel_closed_cb
Diffstat (limited to 'src')
-rw-r--r--src/activity.py41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/activity.py b/src/activity.py
index 622ea8a..9d5615d 100644
--- a/src/activity.py
+++ b/src/activity.py
@@ -717,43 +717,21 @@ class Activity(ExportedGObject):
_left_cb method; this callback is set up within this method.
"""
_logger.debug("Leaving shared activity %s", self._id)
-
if not self._joined:
_logger.debug("Error: Had not joined activity %s" % self._id)
async_err_cb(RuntimeError("Had not joined activity %s"
% self._id))
return
-
- if self._leave_cb is not None: # XXX overkill?
- # FIXME: or should we trigger all the attempts?
+ if self._leave_cb is not None:
async_err_cb(RuntimeError('Already trying to leave activity %s'
% self._id))
return
-
self._leave_cb = async_cb
self._leave_err_cb = async_err_cb
-
self._ps.owner.remove_owner_activity(self._tp, self._id)
-
# This also sets self._joined = False:
- self._text_channel[CHANNEL_INTERFACE].Close() # XXX does this close the whole thing?
-
- try:
- #self._ps.owner.remove_activity(self)
- self._remove_buddies([self._ps.owner]) # XXX XXX XXX FIXME
- except Exception, e:
- _logger.debug("XXX Failed to remove you from %s: %s" % (self._id, e))
- try:
- self._leave_cb()
- _logger.debug("Leaving of activity %s succeeded" % self._id)
- except Exception, e:
- _logger.debug("Leaving of activity %s failed: %s" % (self._id, e))
- self._leave_err_cb(e)
+ self._text_channel[CHANNEL_INTERFACE].Close()
- self._leave_cb = None
- self._leave_err_cb = None
-
- _logger.debug("triggered leaving on activity %s", self._id)
def _text_channel_members_changed_cb(self, message, added, removed,
local_pending, remote_pending,
@@ -813,6 +791,21 @@ class Activity(ExportedGObject):
self._joined = False
self._self_handle = None
self._text_channel = None
+ try:
+ #self._ps.owner.remove_activity(self)
+ self._remove_buddies([self._ps.owner])
+ except Exception, e:
+ _logger.debug(
+ "Failed to remove you from %s: %s" % (self._id, e))
+ try:
+ self._leave_cb()
+ _logger.debug("Leaving of activity %s succeeded" % self._id)
+ except Exception, e:
+ _logger.debug("Leaving of activity %s failed: %s" % (self._id, e))
+ self._leave_err_cb(e)
+ self._leave_cb = None
+ self._leave_err_cb = None
+ _logger.debug("triggered leaving on activity %s", self._id)
def send_properties(self):
"""Tells the Telepathy server what the properties of this activity are.