Browse Source

also unregister callbacks from qewallet and qechannellistmodel on destroy

patch-4
Sander van Grieken 3 years ago
parent
commit
c79651f981
  1. 5
      electrum/gui/qml/qechannellistmodel.py
  2. 12
      electrum/gui/qml/qewallet.py

5
electrum/gui/qml/qechannellistmodel.py

@ -4,7 +4,7 @@ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex
from electrum.logging import get_logger from electrum.logging import get_logger
from electrum.util import Satoshis, register_callback from electrum.util import Satoshis, register_callback, unregister_callback
from electrum.lnutil import LOCAL, REMOTE from electrum.lnutil import LOCAL, REMOTE
from .qetypes import QEAmount from .qetypes import QEAmount
@ -36,6 +36,7 @@ class QEChannelListModel(QAbstractListModel):
# methods of this class only, and specifically not be # methods of this class only, and specifically not be
# partials, lambdas or methods of subobjects. Hence... # partials, lambdas or methods of subobjects. Hence...
register_callback(self.on_network, interests) register_callback(self.on_network, interests)
self.destroyed.connect(lambda: self.on_destroy())
def on_network(self, event, *args): def on_network(self, event, *args):
if event == 'channel': if event == 'channel':
@ -56,6 +57,8 @@ class QEChannelListModel(QAbstractListModel):
else: else:
self._logger.debug('unhandled event %s: %s' % (event, repr(args))) self._logger.debug('unhandled event %s: %s' % (event, repr(args)))
def on_destroy(self):
unregister_callback(self.on_network)
def rowCount(self, index): def rowCount(self, index):
return len(self.channels) return len(self.channels)

12
electrum/gui/qml/qewallet.py

@ -7,15 +7,16 @@ import threading
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl, QTimer from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl, QTimer
from electrum.i18n import _ from electrum.i18n import _
from electrum.util import register_callback, Satoshis, format_time, parse_max_spend, InvalidPassword from electrum.util import (register_callback, unregister_callback,
Satoshis, format_time, parse_max_spend, InvalidPassword)
from electrum.logging import get_logger from electrum.logging import get_logger
from electrum.wallet import Wallet, Abstract_Wallet from electrum.wallet import Wallet, Abstract_Wallet
from electrum.storage import StorageEncryptionVersion from electrum.storage import StorageEncryptionVersion
from electrum import bitcoin from electrum import bitcoin
from electrum.transaction import PartialTxOutput from electrum.transaction import PartialTxOutput
from electrum.invoices import (Invoice, InvoiceError, from electrum.invoices import (Invoice, InvoiceError,
PR_DEFAULT_EXPIRATION_WHEN_CREATING, PR_PAID, PR_DEFAULT_EXPIRATION_WHEN_CREATING, PR_PAID,
PR_UNPAID, PR_UNKNOWN, PR_EXPIRED, PR_UNCONFIRMED) PR_UNPAID, PR_UNKNOWN, PR_EXPIRED, PR_UNCONFIRMED)
from .qeinvoicelistmodel import QEInvoiceListModel, QERequestListModel from .qeinvoicelistmodel import QEInvoiceListModel, QERequestListModel
from .qetransactionlistmodel import QETransactionListModel from .qetransactionlistmodel import QETransactionListModel
@ -86,6 +87,7 @@ class QEWallet(AuthMixin, QObject):
# methods of this class only, and specifically not be # methods of this class only, and specifically not be
# partials, lambdas or methods of subobjects. Hence... # partials, lambdas or methods of subobjects. Hence...
register_callback(self.on_network, interests) register_callback(self.on_network, interests)
self.destroyed.connect(lambda: self.on_destroy())
@pyqtProperty(bool, notify=isUptodateChanged) @pyqtProperty(bool, notify=isUptodateChanged)
def isUptodate(self): def isUptodate(self):
@ -154,6 +156,8 @@ class QEWallet(AuthMixin, QObject):
else: else:
self._logger.debug('unhandled event: %s %s' % (event, str(args))) self._logger.debug('unhandled event: %s %s' % (event, str(args)))
def on_destroy(self):
unregister_callback(self.on_network)
def add_tx_notification(self, tx): def add_tx_notification(self, tx):
self._logger.debug('new transaction event') self._logger.debug('new transaction event')

Loading…
Cancel
Save