diff options
author | Alan Hourihane <[email protected]> | 2009-03-19 15:34:45 +0000 |
---|---|---|
committer | Alan Hourihane <[email protected]> | 2009-03-19 15:37:25 +0000 |
commit | 9ed03af8c0a8e6af54e827f15778d8b567492c89 (patch) | |
tree | db489c3b1837d303f5c8aa0a535d8a8141485d4f /src/egl/drivers/glx | |
parent | 214132adfee555a26b64b2dd359afa6b09e845f5 (diff) |
egl: try harder for eglGetProcAddress()
Diffstat (limited to 'src/egl/drivers/glx')
-rw-r--r-- | src/egl/drivers/glx/egl_glx.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/egl/drivers/glx/egl_glx.c b/src/egl/drivers/glx/egl_glx.c index 3db63a920e4..e2b3b4f67a3 100644 --- a/src/egl/drivers/glx/egl_glx.c +++ b/src/egl/drivers/glx/egl_glx.c @@ -797,7 +797,20 @@ GLX_eglSwapBuffers(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw) static _EGLProc GLX_eglGetProcAddress(const char *procname) { - return (_EGLProc)glXGetProcAddress((const GLubyte *)procname); + /* This is a bit of a hack to get at the gallium/Mesa state tracker + * * function st_get_proc_address(). This will probably change at + * * some point. + * */ + _EGLProc (*get_proc_addr)(const char *procname); + get_proc_addr = dlsym(NULL, "st_get_proc_address"); + if (get_proc_addr) + return get_proc_addr(procname); + + get_proc_addr = glXGetProcAddress((const GLubyte *)procname); + if (get_proc_addr) + return get_proc_addr(procname); + + return (_EGLProc)dlsym(NULL, procname); } |