From cdbfc91effd0330dbb931addbc56fa5d9db1f8ff Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 25 May 2010 09:15:04 -0600 Subject: [PATCH] Fix cleanup of device jobs on device yank --- src/calibre/gui2/device.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index 19d0c5f068..41abc6cb95 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -37,6 +37,7 @@ class DeviceJob(BaseJob): self.exception = None self.job_manager = job_manager self._details = _('No details available.') + self._aborted = False def start_work(self): self.start_time = time.time() @@ -55,7 +56,11 @@ class DeviceJob(BaseJob): self.start_work() try: self.result = self.func(*self.args, **self.kwargs) + if self._aborted: + return except (Exception, SystemExit), err: + if self._aborted: + return self.failed = True self._details = unicode(err) + '\n\n' + \ traceback.format_exc() @@ -63,6 +68,12 @@ class DeviceJob(BaseJob): finally: self.job_done() + def abort(self, err): + self._aborted = True + self.failed = True + self._details = unicode(err) + self.exception = err + @property def log_file(self): return cStringIO.StringIO(self._details.encode('utf-8'))