summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)