diff options
author | Florian Bruhin <me@the-compiler.org> | 2022-05-11 10:36:00 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2022-06-22 17:41:11 +0200 |
commit | 1b85c2980af48fd2a9973fe1a33b455a31b89c0f (patch) | |
tree | b4819b48f5269de3470de615f4811a285d1a9d22 | |
parent | 5bc841cde2ae9841dc7b9f4865c6fff667a2831d (diff) | |
download | qutebrowser-1b85c2980af48fd2a9973fe1a33b455a31b89c0f.tar.gz qutebrowser-1b85c2980af48fd2a9973fe1a33b455a31b89c0f.zip |
backendproblem: Add check for qt-quick software rendering
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 86cf804c2..69303d70e 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -337,6 +337,37 @@ class _BackendProblemChecker: errbox.exec() sys.exit(usertypes.Exit.err_init) + def _check_software_rendering(self) -> None: + """WORKAROUND for https://bugreports.qt.io/browse/QTBUG-103372 + + Hopefully fixed with Qt 6.3.1. + FIXME:qt6 update + """ + self._assert_backend(usertypes.Backend.QtWebEngine) + + if not qtutils.version_check('6.3.0', exact=True, compiled=False): + return + + if os.environ.get('QT_QUICK_BACKEND') != 'software': + return + + text = ("You can instead force software rendering on the Chromium level (sets " + "<tt>qt.force_software_rendering</tt> to <tt>chromium</tt> instead of " + "<tt>qt-quick</tt>).") + + button = _Button("Force Chromium software rendering", + 'qt.force_software_rendering', + 'chromium') + self._show_dialog( + backend=usertypes.Backend.QtWebEngine, + suggest_other_backend=False, + because="a Qt 6.3.0 bug causes instant crashes with Qt Quick software rendering", + text=text, + buttons=[button], + ) + + raise utils.Unreachable + def _assert_backend(self, backend: usertypes.Backend) -> None: assert objects.backend == backend, objects.backend @@ -347,6 +378,7 @@ class _BackendProblemChecker: self._check_webengine_version() self._handle_ssl_support() self._handle_serviceworker_nuking() + self._check_software_rendering() else: self._assert_backend(usertypes.Backend.QtWebKit) self._handle_ssl_support(fatal=True) |