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