system-config-printer/system-config-printer-asyncipp-traceback.patch

52 lines
2.0 KiB
Diff

diff -up system-config-printer-1.2.0/asyncipp.py.asyncipp-traceback system-config-printer-1.2.0/asyncipp.py
--- system-config-printer-1.2.0/asyncipp.py.asyncipp-traceback 2010-03-26 12:50:39.829627667 +0000
+++ system-config-printer-1.2.0/asyncipp.py 2010-03-26 12:50:51.888627367 +0000
@@ -59,6 +59,7 @@ class _IPPConnectionThread(threading.Thr
self._auth_handler = auth_handler
self._auth_queue = Queue.Queue (1)
self.user = None
+ self._destroyed = False
debugprint ("+%s" % self)
def __del__ (self):
@@ -157,6 +158,7 @@ class _IPPConnectionThread(threading.Thr
self._queue.task_done ()
debugprint ("Thread exiting")
+ self._destroyed = True
del self._conn # already destroyed
del self._reply_handler
del self._error_handler
@@ -188,21 +190,23 @@ class _IPPConnectionThread(threading.Thr
return password
def _reply (self, result):
- def send_reply (result):
- self._reply_handler (self._conn, result)
+ def send_reply (handler, result):
+ if not self._destroyed:
+ handler (self._conn, result)
return False
- if self._reply_handler:
- gobject.idle_add (send_reply, result)
+ if not self._destroyed and self._reply_handler:
+ gobject.idle_add (send_reply, self._reply_handler, result)
def _error (self, exc):
- def send_error (exc):
- self._error_handler (self._conn, exc)
+ def send_error (handler, exc):
+ if not self._destroyed:
+ handler (self._conn, exc)
return False
- if self._error_handler:
+ if not self._destroyed and self._error_handler:
debugprint ("Add %s to idle" % self._error_handler)
- gobject.idle_add (send_error, exc)
+ gobject.idle_add (send_error, self._error_handler, exc)
###
### This is the user-visible class. Although it does not inherit from