diff options
-rw-r--r-- | qutebrowser/browser/webkit/network/networkmanager.py | 7 | ||||
-rw-r--r-- | qutebrowser/utils/log.py | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/qutebrowser/browser/webkit/network/networkmanager.py b/qutebrowser/browser/webkit/network/networkmanager.py index 3e393680c..a1ef0463d 100644 --- a/qutebrowser/browser/webkit/network/networkmanager.py +++ b/qutebrowser/browser/webkit/network/networkmanager.py @@ -155,7 +155,12 @@ class NetworkManager(QNetworkAccessManager): def __init__(self, *, win_id, tab_id, private, parent=None): log.init.debug("Initializing NetworkManager") - super().__init__(parent) + with log.disable_qt_msghandler(): + # WORKAROUND for a hang when a message is printed - See: + # http://www.riverbankcomputing.com/pipermail/pyqt/2014-November/035045.html + # + # Still needed on Qt/PyQt 5.15.2 according to #6010. + super().__init__(parent) log.init.debug("NetworkManager init done") self.adopted_downloads = 0 self._win_id = win_id diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 9aedb419f..fa6d9beaf 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -234,6 +234,16 @@ def _init_py_warnings() -> None: @contextlib.contextmanager +def disable_qt_msghandler() -> Iterator[None]: + """Contextmanager which temporarily disables the Qt message handler.""" + old_handler = QtCore.qInstallMessageHandler(None) + try: + yield + finally: + QtCore.qInstallMessageHandler(old_handler) + + +@contextlib.contextmanager def py_warning_filter(action: str = 'ignore', **kwargs: Any) -> Iterator[None]: """Contextmanager to temporarily disable certain Python warnings.""" warnings.filterwarnings(action, **kwargs) |