diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2020-06-26 13:24:01 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2020-07-07 11:17:16 +0200 |
commit | 5988cec1a1b59aa163042a419c4c2e978bb814bb (patch) | |
tree | 8585d676b552534c6e72c6c30f2f376a098cdfb1 /src/core/web_engine_context.cpp | |
parent | 678076faeabd7e827abe31f72f4220af8d8f95ac (diff) |
Fix ScopedGLContextChecker with QTWEBENGINE_DISABLE_GPU_THREAD=1
The ScopedGLContextChecker, which deactivates the current
QOpenGLContext when executing Chromium tasks, is currently enabled
only if QOpenGLContext::supportsThreadedOpenGL() is false. But the gpu
thread can nowadays be disabled also with an environment variable and
ScopedGLContextChecker needs to take this into account.
Change-Id: I012524538b49b033ed053dbc41ed4350db916542
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/web_engine_context.cpp')
-rw-r--r-- | src/core/web_engine_context.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index bda57aab2..31e78e7d0 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -494,6 +494,17 @@ const static char kChromiumFlagsEnv[] = "QTWEBENGINE_CHROMIUM_FLAGS"; const static char kDisableSandboxEnv[] = "QTWEBENGINE_DISABLE_SANDBOX"; const static char kDisableInProcGpuThread[] = "QTWEBENGINE_DISABLE_GPU_THREAD"; +// static +bool WebEngineContext::isGpuServiceOnUIThread() +{ + static bool threadedGpu = +#if QT_CONFIG(opengl) && !defined(Q_OS_MACOS) + QOpenGLContext::supportsThreadedOpenGL() && +#endif + !qEnvironmentVariableIsSet(kDisableInProcGpuThread); + return !threadedGpu; +} + static void appendToFeatureList(std::string &featureList, const char *feature) { if (featureList.empty()) @@ -602,16 +613,6 @@ WebEngineContext::WebEngineContext() if (isDesktopGLOrSoftware || isGLES2Context) parsedCommandLine->AppendSwitch(switches::kDisableES3GLContext); #endif - bool threadedGpu = false; -#if QT_CONFIG(opengl) - threadedGpu = QOpenGLContext::supportsThreadedOpenGL(); -#if defined(Q_OS_MACOS) - // QtBase disabled it when building on 10.14+, unfortunately we still need it - // until we have fixed single-threaded viz-display-compositor. - threadedGpu = true; -#endif -#endif - threadedGpu = threadedGpu && !qEnvironmentVariableIsSet(kDisableInProcGpuThread); std::string disableFeatures; std::string enableFeatures; @@ -744,7 +745,7 @@ WebEngineContext::WebEngineContext() parsedCommandLine->AppendSwitch(switches::kDisableGpu); } - registerMainThreadFactories(threadedGpu); + registerMainThreadFactories(); SetContentClient(new ContentClientQt); |