From bdfd084296681bcead17c42f1e5cf0e24ee04f65 Mon Sep 17 00:00:00 2001
From: Viktor Engelmann <viktor.engelmann@qt.io>
Date: Fri, 7 Jul 2017 12:56:19 +0200
Subject: [PATCH] Load libEGL and libGLES2 symbols implicitly
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Instead of explicitly loading libraries from hard-coded locations,
we now just call dlopen(NULL, RTLD_LAZY). This returns a handle to
the host process'es context, which already contains the symbols of
both these libraries, because we link against them.
It was necessary to bypass LoadLibrary, because that expects a non-NULL
file path, so we couldn't pass NULL through that interface.

Upstream-Status: Merged
Task-number: QTBUG-57761
Change-Id: I29f037dfe542222b5188a33c7727c81a464a87bb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[gportay: backport from 5.9 and merge conflicts]
---
 src/core/surface_factory_qt.cpp | 40 ++++++++--------------------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

diff --git a/src/core/surface_factory_qt.cpp b/src/core/surface_factory_qt.cpp
index 48c91bfc..c6059b67 100644
--- a/src/core/surface_factory_qt.cpp
+++ b/src/core/surface_factory_qt.cpp
@@ -51,51 +51,27 @@
 #if defined(USE_OZONE)
 
 #include <EGL/egl.h>
-
-#ifndef QT_LIBDIR_EGL
-#define QT_LIBDIR_EGL "/usr/lib"
-#endif
-#ifndef QT_LIBDIR_GLES2
-#define QT_LIBDIR_GLES2 QT_LIBDIR_EGL
-#endif
+#include <dlfcn.h>
 
 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(AddGLLibraryCallback add_gl_library, SetGLGetProcAddressProcCallback set_gl_get_proc_address)
 {
-    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)
+    base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY);
+    if (!eglgles2Library) {
+        LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror();
         return false;
+    }
 
-    gfx::GLGetProcAddressProc get_proc_address = reinterpret_cast<gfx::GLGetProcAddressProc>(base::GetFunctionPointerFromNativeLibrary(eglLibrary, "eglGetProcAddress"));
+    gfx::GLGetProcAddressProc get_proc_address = reinterpret_cast<gfx::GLGetProcAddressProc>(base::GetFunctionPointerFromNativeLibrary(eglgles2Library, "eglGetProcAddress"));
     if (!get_proc_address) {
         LOG(ERROR) << "eglGetProcAddress not found.";
-        base::UnloadNativeLibrary(eglLibrary);
-        base::UnloadNativeLibrary(gles2Library);
+        base::UnloadNativeLibrary(eglgles2Library);
         return false;
     }
 
     gfx::SetGLGetProcAddressProc(get_proc_address);
-    gfx::AddGLNativeLibrary(eglLibrary);
-    gfx::AddGLNativeLibrary(gles2Library);
+    gfx::AddGLNativeLibrary(eglgles2Library);
     return true;
 }
 
-- 
2.15.0

