summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-05 19:50:38 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-05 19:50:48 +0100
commit4a7406fe38607d8a079e3272c18a06f3d7537a83 (patch)
tree58f19322091de8d56389b0a47863338bd379cc9d
parent909bfff3ce8c6f9e8dbeb9a2079ac8e95272d067 (diff)
downloadqutebrowser-4a7406fe38607d8a079e3272c18a06f3d7537a83.tar.gz
qutebrowser-4a7406fe38607d8a079e3272c18a06f3d7537a83.zip
Revert "old qt: Remove networkmanager init workaround"
See #6010 This reverts commit 0810b3e7b99316861bf9e34c694136c30e1a2266.
-rw-r--r--qutebrowser/browser/webkit/network/networkmanager.py7
-rw-r--r--qutebrowser/utils/log.py10
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)