URI: 
       tlightning_channels_list: use signals to avoid segfault - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit caadc5a5bbf3a4cba8020609f3944c5ae5f23f48
   DIR parent aaa67adb5ab421c75ebe8cae6a4989ab88d62008
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Fri, 13 Apr 2018 19:22:01 +0200
       
       lightning_channels_list: use signals to avoid segfault
       
       Diffstat:
         M gui/qt/lightning_channels_list.py   |      14 ++++++++++++++
       
       1 file changed, 14 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/gui/qt/lightning_channels_list.py b/gui/qt/lightning_channels_list.py
       t@@ -4,6 +4,7 @@ from PyQt5 import QtCore, QtWidgets
        from collections import OrderedDict
        import logging
        from electrum.lightning import lightningCall
       +import traceback
        
        mapping = {0: "channel_point"}
        revMapp = {"channel_point": 0}
       t@@ -39,6 +40,8 @@ def clickHandler(nodeIdInput, local_amt_inp, push_amt_inp, lightningRpc):
            lightningCall(lightningRpc, "openchannel")(str(nodeId), local_amt_inp.text(), push_amt_inp.text())
        
        class LightningChannelsList(QtWidgets.QWidget):
       +    update_rows = QtCore.pyqtSignal(str, dict)
       +
            def create_menu(self, position):
                menu = QtWidgets.QMenu()
                cur = self._tv.currentItem()
       t@@ -67,6 +70,15 @@ class LightningChannelsList(QtWidgets.QWidget):
                        except KeyError:
                            obj[k] = v
            def lightningRpcHandler(self, methodName, obj):
       +        if isinstance(obj, Exception):
       +            try:
       +                raise obj
       +            except:
       +                traceback.print_exc()
       +        else:
       +            self.update_rows.emit(methodName, obj)
       +
       +    def do_update_rows(self, methodName, obj):
                if methodName != "listchannels":
                    print("channel list ignoring reply {} to {}".format(obj, methodName))
                    return
       t@@ -78,6 +90,8 @@ class LightningChannelsList(QtWidgets.QWidget):
            def __init__(self, parent, lightningWorker, lightningRpc):
                QtWidgets.QWidget.__init__(self, parent)
        
       +        self.update_rows.connect(self.do_update_rows)
       +
                def tick():
                    lightningCall(lightningRpc, "listchannels")()