+ /*
+ * Since libGL must be linked to the binary we run on, this is the
+ * right handle. That 'current binary' handle also avoids conflicts which
+ * arise from linking with a different libGL at link time an than later
+ * use the standard libGL at runtime ...
+ */
+ if (libHandle == NULL) {
+ libHandle = dlopen(NULL, RTLD_LAZY);
+
+ if (!libHandle) {
+ const char *error = dlerror();
+ if (error) {
+ SG_LOG(SG_GENERAL, SG_INFO, error);
+ return 0;
+ }
+ }
+
+ void* symbol = dlsym(libHandle, "glXGetProcAddress");
+ if (!symbol)
+ symbol = dlsym(libHandle, "glXGetProcAddressARB");
+ glXGetProcAddressPtr = (void *(*)(const GLubyte*)) symbol;
+ }
+
+ // First try the glx api function for that
+ if (glXGetProcAddressPtr) {
+ fptr = glXGetProcAddressPtr((const GLubyte*)func);