diff options
author | Florian Bruhin <git@the-compiler.org> | 2017-10-14 12:10:21 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2017-10-14 12:10:21 +0200 |
commit | b3f395453b828ebbc9467596f14db9738f965718 (patch) | |
tree | 98995ffdd2619c064a7194c39437152dbe8bd1d7 | |
parent | d411ec1eba313bc39a430861849f5f489b40441d (diff) | |
download | qutebrowser-b3f395453b828ebbc9467596f14db9738f965718.tar.gz qutebrowser-b3f395453b828ebbc9467596f14db9738f965718.zip |
Run Nvidia shader workaround earlier
We need to do it before utils.opengl_vendor(), and it fits better there anyway.
This was a regression in v1.0.
See #2554, #3106
-rw-r--r-- | qutebrowser/browser/webengine/webenginesettings.py | 7 | ||||
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index c1373a11b..47be9ffed 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -28,8 +28,6 @@ Module attributes: """ import os -import ctypes -import ctypes.util from PyQt5.QtGui import QFont from PyQt5.QtWebEngineWidgets import (QWebEngineSettings, QWebEngineProfile, @@ -231,11 +229,6 @@ def init(args): if args.enable_webengine_inspector: os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = str(utils.random_port()) - # WORKAROUND for - # https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826 - if utils.is_linux: - ctypes.CDLL(ctypes.util.find_library("GL"), mode=ctypes.RTLD_GLOBAL) - _init_profiles() # We need to do this here as a WORKAROUND for diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 5b3f3f7d7..f126ceda5 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -23,6 +23,8 @@ import os import sys import functools import html +import ctypes +import ctypes.util import attr from PyQt5.QtCore import Qt @@ -31,7 +33,7 @@ from PyQt5.QtWidgets import (QApplication, QDialog, QPushButton, QHBoxLayout, from PyQt5.QtNetwork import QSslSocket from qutebrowser.config import config -from qutebrowser.utils import usertypes, objreg, version, qtutils, log +from qutebrowser.utils import usertypes, objreg, version, qtutils, log, utils from qutebrowser.misc import objects, msgbox @@ -154,6 +156,19 @@ def _show_dialog(*args, **kwargs): sys.exit(usertypes.Exit.err_init) +def _nvidia_shader_workaround(): + """Work around QOpenGLShaderProgram issues. + + NOTE: This needs to be called before _handle_nouveau_graphics, or some + setups will segfault in version.opengl_vendor(). + + See https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826 + """ + assert objects.backend == usertypes.Backend.QtWebEngine, objects.backend + if utils.is_linux: + ctypes.CDLL(ctypes.util.find_library("GL"), mode=ctypes.RTLD_GLOBAL) + + def _handle_nouveau_graphics(): assert objects.backend == usertypes.Backend.QtWebEngine, objects.backend @@ -352,6 +367,7 @@ def init(): if objects.backend == usertypes.Backend.QtWebEngine: _handle_ssl_support() _handle_wayland() + _nvidia_shader_workaround() _handle_nouveau_graphics() else: assert objects.backend == usertypes.Backend.QtWebKit, objects.backend |