Browse Source

Qt swap dialog: do not call update() from the asyncio thread. Fixes some segfaults that were triggered by opening the dialog

patch-4
ThomasV 4 years ago
parent
commit
039d11e350
  1. 5
      electrum/gui/qt/swap_dialog.py

5
electrum/gui/qt/swap_dialog.py

@ -1,5 +1,6 @@
from typing import TYPE_CHECKING, Optional
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QLabel, QVBoxLayout, QGridLayout, QPushButton
from electrum.i18n import _
@ -26,6 +27,7 @@ Do you want to continue?
class SwapDialog(WindowModalDialog):
tx: Optional[PartialTransaction]
update_signal = pyqtSignal()
def __init__(self, window: 'ElectrumWindow'):
WindowModalDialog.__init__(self, window, _('Submarine Swap'))
@ -83,6 +85,7 @@ class SwapDialog(WindowModalDialog):
self.ok_button.setDefault(True)
self.ok_button.setEnabled(False)
vbox.addLayout(Buttons(CancelButton(self), self.ok_button))
self.update_signal.connect(self.update)
self.update()
def fee_slider_callback(self, dyn, pos, fee_rate):
@ -211,7 +214,7 @@ class SwapDialog(WindowModalDialog):
if not self.network:
self.window.show_error(_("You are offline."))
return
self.window.run_coroutine_from_thread(self.swap_manager.get_pairs(), lambda x: self.update())
self.window.run_coroutine_from_thread(self.swap_manager.get_pairs(), lambda x: self.update_signal.emit())
if not self.exec_():
return
if self.is_reverse:

Loading…
Cancel
Save