From 4a7406fe38607d8a079e3272c18a06f3d7537a83 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 5 Jan 2021 19:50:38 +0100 Subject: Revert "old qt: Remove networkmanager init workaround" See #6010 This reverts commit 0810b3e7b99316861bf9e34c694136c30e1a2266. --- qutebrowser/browser/webkit/network/networkmanager.py | 7 ++++++- qutebrowser/utils/log.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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 @@ -233,6 +233,16 @@ def _init_py_warnings() -> None: r"is deprecated.*") +@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.""" -- cgit v1.2.3-54-g00ecf