Commit e61e1995 authored by Adam Jackson's avatar Adam Jackson 🎧 Committed by Keith Packard
Browse files

xquartz/glx: Convert to non-glapi dispatch



CGL doesn't have anything like glXGetProcAddress, and the old code just
called down to dlsym in any case.  It's a little mind-warping since
dlopening a framework actually loads multiple dylibs, but that's just
how OSX rolls.
Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
Reviewed-by: Jeremy Huddleston Sequoia's avatarJeremy Huddleston Sequoia <jeremyhu@apple.com>
parent a668aa0e
......@@ -48,8 +48,6 @@
#include <glxserver.h>
#include <glxutil.h>
#include <glapi.h>
#include "x-hash.h"
#include "visualConfigs.h"
......@@ -643,15 +641,20 @@ __glFloorLog2(GLuint val)
"/System/Library/Frameworks/OpenGL.framework/OpenGL"
#endif
static void *opengl_framework_handle;
static glx_gpa_proc
get_proc_address(const char *sym)
{
return (glx_gpa_proc) dlsym(opengl_framework_handle, sym);
}
static void
setup_dispatch_table(void)
{
static struct _glapi_table *disp = NULL;
static void *handle;
const char *opengl_framework_path;
if (disp) {
_glapi_set_dispatch(disp);
if (opengl_framework_handle) {
return;
}
......@@ -661,16 +664,13 @@ setup_dispatch_table(void)
}
(void)dlerror(); /*drain dlerror */
handle = dlopen(opengl_framework_path, RTLD_LOCAL);
opengl_framework_handle = dlopen(opengl_framework_path, RTLD_LOCAL);
if (!handle) {
if (!opengl_framework_handle) {
ErrorF("unable to dlopen %s : %s, using RTLD_DEFAULT\n",
opengl_framework_path, dlerror());
handle = RTLD_DEFAULT;
opengl_framework_handle = RTLD_DEFAULT;
}
disp = _glapi_create_table_from_handle(handle, "gl");
assert(disp);
_glapi_set_dispatch(disp);
__glXsetGetProcAddress(get_proc_address);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment