diff options
author | Morgan 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) |
commit | 63f7e93ca20311ee4828aadbfabe01daeddbc6a6 (patch) | |
tree | 16668a7242b41f4d71f7041730bccc7f86eb79df | |
parent | bffae7d0cfddd37633c977ca5a50b65440901bd5 (diff) |
Make Buddy-left async through moving code to _text_channel_closed_cb
-rw-r--r-- | src/activity.py | 41 |
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. |