From 696dc4f6dfcac6b2bbc6c874408cb9127f5abdf1 Mon Sep 17 00:00:00 2001
From: Lars Knoll <lars.knoll@theqtcompany.com>
Date: Tue, 2 Feb 2016 09:50:19 +0100
Subject: [PATCH] Simplify and speed up code resolving gl functions

Change-Id: I36d8881b658760dde18e4f52742c49f3c0cab7a5
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
---
 .../cglconvenience/cglconvenience.mm               | 14 +-------------
 .../cglconvenience/cglconvenience_p.h              |  1 -
 src/plugins/platforms/cocoa/qcocoaglcontext.mm     |  3 ++-
 3 files changed, 3 insertions(+), 15 deletions(-)

diff --git a/src/platformsupport/cglconvenience/cglconvenience.mm b/src/platformsupport/cglconvenience/cglconvenience.mm
index 051b2994046..a18510a9e27 100644
--- a/src/platformsupport/cglconvenience/cglconvenience.mm
+++ b/src/platformsupport/cglconvenience/cglconvenience.mm
@@ -42,19 +42,7 @@
 #include <QtCore/private/qcore_mac_p.h>
 #include <AppKit/AppKit.h>
 #include <QVector>
-
-QFunctionPointer qcgl_getProcAddress(const char *procName)
-{
-    CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
-            CFSTR("/System/Library/Frameworks/OpenGL.framework"), kCFURLPOSIXPathStyle, false);
-    CFBundleRef bundle = CFBundleCreate(kCFAllocatorDefault, url);
-    CFStringRef procNameCF = QCFString::toCFStringRef(QString::fromLatin1(procName));
-    void *proc = CFBundleGetFunctionPointerForName(bundle, procNameCF);
-    CFRelease(url);
-    CFRelease(bundle);
-    CFRelease(procNameCF);
-    return (QFunctionPointer)proc;
-}
+#include <qdebug.h>
 
 // Match up with createNSOpenGLPixelFormat below!
 QSurfaceFormat qcgl_surfaceFormat()
diff --git a/src/platformsupport/cglconvenience/cglconvenience_p.h b/src/platformsupport/cglconvenience/cglconvenience_p.h
index adc18799165..e531e73549d 100644
--- a/src/platformsupport/cglconvenience/cglconvenience_p.h
+++ b/src/platformsupport/cglconvenience/cglconvenience_p.h
@@ -55,7 +55,6 @@
 #include <QString>
 #include <OpenGL/OpenGL.h>
 
-QFunctionPointer qcgl_getProcAddress(const char *procName);
 QSurfaceFormat qcgl_surfaceFormat();
 void *qcgl_createNSOpenGLPixelFormat(const QSurfaceFormat &format);
 
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
index c004f26d029..7a129699720 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
@@ -44,6 +44,7 @@
 #include <QtCore/private/qcore_mac_p.h>
 #include <QtPlatformSupport/private/cglconvenience_p.h>
 #include <QtPlatformHeaders/qcocoanativecontext.h>
+#include <dlfcn.h>
 
 #import <AppKit/AppKit.h>
 
@@ -337,7 +338,7 @@ void QCocoaGLContext::doneCurrent()
 
 QFunctionPointer QCocoaGLContext::getProcAddress(const char *procName)
 {
-    return qcgl_getProcAddress(procName);
+    return (QFunctionPointer)dlsym(RTLD_DEFAULT, procName);
 }
 
 void QCocoaGLContext::update()
-- 
GitLab