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 <ajax@redhat.com> Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
This commit is contained in:
parent
a668aa0e41
commit
e61e19959d
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user