egl: try harder for eglGetProcAddress()
authorAlan Hourihane <alanh@vmware.com>
Thu, 19 Mar 2009 15:34:45 +0000 (15:34 +0000)
committerAlan Hourihane <alanh@vmware.com>
Thu, 19 Mar 2009 15:37:25 +0000 (15:37 +0000)
src/egl/drivers/glx/egl_glx.c

index 3db63a920e4780130ab7223835583306d23b2cba..e2b3b4f67a31c59c2c2dd95ce2f58c393110a6ed 100644 (file)
@@ -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);
 }