qt: make QtEventListener more robust against stale PyQt wrappers
This commit is contained in:
@@ -1335,10 +1335,7 @@ class ImageGraphicsEffect(QObject):
|
||||
return result
|
||||
|
||||
|
||||
|
||||
|
||||
class QtEventListener(EventListener):
|
||||
|
||||
qt_callback_signal = QtCore.pyqtSignal(tuple)
|
||||
|
||||
def register_callbacks(self):
|
||||
@@ -1346,13 +1343,17 @@ class QtEventListener(EventListener):
|
||||
EventListener.register_callbacks(self)
|
||||
|
||||
def unregister_callbacks(self):
|
||||
self.qt_callback_signal.disconnect()
|
||||
try:
|
||||
self.qt_callback_signal.disconnect()
|
||||
except RuntimeError: # wrapped Qt object might be deleted
|
||||
pass
|
||||
EventListener.unregister_callbacks(self)
|
||||
|
||||
def on_qt_callback_signal(self, args):
|
||||
func = args[0]
|
||||
return func(self, *args[1:])
|
||||
|
||||
|
||||
# decorator for members of the QtEventListener class
|
||||
def qt_event_listener(func):
|
||||
func = event_listener(func)
|
||||
|
||||
Reference in New Issue
Block a user