diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-05 19:50:38 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-05 19:50:48 +0100 |
commit | 4a7406fe38607d8a079e3272c18a06f3d7537a83 (patch) | |
tree | 58f19322091de8d56389b0a47863338bd379cc9d | |
parent | 909bfff3ce8c6f9e8dbeb9a2079ac8e95272d067 (diff) | |
download | qutebrowser-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.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) |