From a942613d7fea62932de3ced4008ebbb8ae190bc4 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 27 Jul 2017 09:22:12 +0200 Subject: [PATCH] Use ctypes instead of PyOpenGL for QtWebEngine Nvidia workaround Fixes #2821 --- CHANGELOG.asciidoc | 2 ++ README.asciidoc | 1 - qutebrowser/browser/webengine/webenginesettings.py | 8 ++++++++ qutebrowser/misc/earlyinit.py | 6 ------ qutebrowser/utils/version.py | 1 - requirements.txt | 1 - tests/unit/utils/test_version.py | 1 - 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d28efa7e6..4591627c6 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,8 @@ Breaking changes - New dependency on ruamel.yaml; dropped PyYAML dependency. - The QtWebEngine backend is now used by default if available. - New config system which ignores the old config file. +- The depedency on PyOpenGL (when using QtWebEngine) got removed. Note + that PyQt5.QtOpenGL is still a depdency. Major changes ~~~~~~~~~~~~~ diff --git a/README.asciidoc b/README.asciidoc index f7ad0f64d..bf6225062 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -118,7 +118,6 @@ The following software and libraries are required to run qutebrowser: * http://jinja.pocoo.org/[jinja2] * http://pygments.org/[pygments] * http://pyyaml.org/wiki/PyYAML[PyYAML] -* http://pyopengl.sourceforge.net/[PyOpenGL] when using QtWebEngine The following libraries are optional: diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 27ef60cb6..1148dbad9 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -28,6 +28,9 @@ Module attributes: """ import os +import sys +import ctypes +import ctypes.util from PyQt5.QtGui import QFont from PyQt5.QtWebEngineWidgets import (QWebEngineSettings, QWebEngineProfile, @@ -199,6 +202,11 @@ 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 sys.platform == '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/earlyinit.py b/qutebrowser/misc/earlyinit.py index e43cd8891..df50b8d08 100644 --- a/qutebrowser/misc/earlyinit.py +++ b/qutebrowser/misc/earlyinit.py @@ -344,12 +344,6 @@ def check_libraries(backend): modules['PyQt5.QtWebEngineWidgets'] = _missing_str("QtWebEngine", webengine=True) modules['PyQt5.QtOpenGL'] = _missing_str("PyQt5.QtOpenGL") - # Workaround for a black screen with some setups - # https://github.com/spyder-ide/spyder/issues/3226 - if not os.environ.get('QUTE_NO_OPENGL_WORKAROUND'): - # Hide "No OpenGL_accelerate module loaded: ..." message - logging.getLogger('OpenGL.acceleratesupport').propagate = False - modules['OpenGL.GL'] = _missing_str("PyOpenGL") else: assert backend == 'webkit' modules['PyQt5.QtWebKit'] = _missing_str("PyQt5.QtWebKit") diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index fe3e1aedb..0b650a97e 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -186,7 +186,6 @@ def _module_versions(): ('yaml', ['__version__']), ('cssutils', ['__version__']), ('typing', []), - ('OpenGL', ['__version__']), ('PyQt5.QtWebEngineWidgets', []), ('PyQt5.QtWebKitWidgets', []), ]) diff --git a/requirements.txt b/requirements.txt index cbf9ba407..b2cc93c1f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,3 @@ MarkupSafe==1.0 Pygments==2.2.0 pyPEG2==2.15.2 PyYAML==3.12 -PyOpenGL==3.1.0 diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py index 339e70987..f9da37841 100644 --- a/tests/unit/utils/test_version.py +++ b/tests/unit/utils/test_version.py @@ -495,7 +495,6 @@ class ImportFake: ('yaml', True), ('cssutils', True), ('typing', True), - ('OpenGL', True), ('PyQt5.QtWebEngineWidgets', True), ('PyQt5.QtWebKitWidgets', True), ])