summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Heikkinen <jani.heikkinen@qt.io>2017-10-03 09:12:38 +0300
committerJani Heikkinen <jani.heikkinen@qt.io>2017-10-03 09:06:38 +0000
commitc11c2c8981e647c1eb2c6753ce77d436b92fff87 (patch)
tree9aa286c766136461ed476e08ff3a13deb5266803
parentfb639faa8898ce6b8fbcc8870ec316114a79f975 (diff)
Revert "Load libEGL and libGLES2 symbols implicitly"v5.9.2
This reverts commit d4c621f6a6b87f2a86069fa393b9f7c4f9e7b9ad, which seems to break QtWebEngine in B2Qt devices Task-number: QTBUG-63341 Change-Id: I2224b8c68c85baa602ed3d2aab88cd2cf622eeb8 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--src/core/surface_factory_qt.cpp40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/core/surface_factory_qt.cpp b/src/core/surface_factory_qt.cpp
index e8be84807..36c05ec5d 100644
--- a/src/core/surface_factory_qt.cpp
+++ b/src/core/surface_factory_qt.cpp
@@ -51,27 +51,51 @@
#if defined(USE_OZONE)
#include <EGL/egl.h>
-#include <dlfcn.h>
+
+#ifndef QT_LIBDIR_EGL
+#define QT_LIBDIR_EGL "/usr/lib"
+#endif
+#ifndef QT_LIBDIR_GLES2
+#define QT_LIBDIR_GLES2 QT_LIBDIR_EGL
+#endif
namespace QtWebEngineCore {
+base::NativeLibrary LoadLibrary(const base::FilePath& filename) {
+ base::NativeLibraryLoadError error;
+ base::NativeLibrary library = base::LoadNativeLibrary(filename, &error);
+ if (!library) {
+ LOG(ERROR) << "Failed to load " << filename.MaybeAsASCII() << ": " << error.ToString();
+ return NULL;
+ }
+ return library;
+}
+
bool SurfaceFactoryQt::LoadEGLGLES2Bindings()
{
- base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY);
- if (!eglgles2Library) {
- LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror();
+ base::FilePath libEGLPath = QtWebEngineCore::toFilePath(QT_LIBDIR_EGL);
+ libEGLPath = libEGLPath.Append("libEGL.so.1");
+ base::NativeLibrary eglLibrary = LoadLibrary(libEGLPath);
+ if (!eglLibrary)
+ return false;
+
+ base::FilePath libGLES2Path = QtWebEngineCore::toFilePath(QT_LIBDIR_GLES2);
+ libGLES2Path = libGLES2Path.Append("libGLESv2.so.2");
+ base::NativeLibrary gles2Library = LoadLibrary(libGLES2Path);
+ if (!gles2Library)
return false;
- }
- gl::GLGetProcAddressProc get_proc_address = reinterpret_cast<gl::GLGetProcAddressProc>(base::GetFunctionPointerFromNativeLibrary(eglgles2Library, "eglGetProcAddress"));
+ gl::GLGetProcAddressProc get_proc_address = reinterpret_cast<gl::GLGetProcAddressProc>(base::GetFunctionPointerFromNativeLibrary(eglLibrary, "eglGetProcAddress"));
if (!get_proc_address) {
LOG(ERROR) << "eglGetProcAddress not found.";
- base::UnloadNativeLibrary(eglgles2Library);
+ base::UnloadNativeLibrary(eglLibrary);
+ base::UnloadNativeLibrary(gles2Library);
return false;
}
gl::SetGLGetProcAddressProc(get_proc_address);
- gl::AddGLNativeLibrary(eglgles2Library);
+ gl::AddGLNativeLibrary(eglLibrary);
+ gl::AddGLNativeLibrary(gles2Library);
return true;
}