]> git.cworth.org Git - fips/blobdiff - fips-dispatch.c
Add explicit link to libpthread, to work around debugging issues
[fips] / fips-dispatch.c
index beb0fa771188ace238d6e749196fada531a0df51..12b0bcb21b3aec757a0787c346a993c5a4162d83 100644 (file)
@@ -27,6 +27,9 @@
 
 #include <EGL/egl.h>
 
+#include "glwrap.h"
+#include "eglwrap.h"
+
 bool fips_dispatch_initialized;
 fips_api_t fips_dispatch_api;
 
@@ -38,11 +41,21 @@ fips_dispatch_init (fips_api_t api)
        fips_dispatch_initialized = true;
 }
 
+typedef void (*generic_function_pointer)(void);
+
 void *
 fips_dispatch_lookup (const char *name)
 {
-       if (fips_dispatch_api == FIPS_API_GLX)
-               return glXGetProcAddressARB ((const GLubyte *)name);
-       else
-               return eglGetProcAddress (name);
+       static PFNGLXGETPROCADDRESSPROC glx_gpa = NULL;
+       static generic_function_pointer (*egl_gpa)(const char *name) = NULL;
+       
+       if (fips_dispatch_api == FIPS_API_GLX) {
+               if (glx_gpa == NULL)
+                       glx_gpa = glwrap_lookup ("glXGetProcAddressARB");
+               return glx_gpa ((const GLubyte *)name);
+       } else {
+               if (egl_gpa == NULL)
+                       egl_gpa = eglwrap_lookup ("eglGetProcAddress");
+               return egl_gpa (name);
+       }
 }