mirror of
				https://github.com/Perlmint/glew-cmake.git
				synced 2025-11-03 22:04:16 +00:00 
			
		
		
		
	Apple OSX GLX support via glXGetProcAddress by Stefan Eilemann
git-svn-id: https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew@636 783a27ee-832a-0410-bc00-9f386506c6dd
This commit is contained in:
		
							parent
							
								
									7d2446061a
								
							
						
					
					
						commit
						97b6a17cad
					
				@ -34,6 +34,29 @@
 | 
			
		||||
#  define GLXEW_CONTEXT_ARG_DEF_LIST void
 | 
			
		||||
#endif /* GLEW_MX */
 | 
			
		||||
 | 
			
		||||
#if defined(__sgi) || defined (__sun) || defined(GLEW_APPLE_GLX)
 | 
			
		||||
#include <dlfcn.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
void* dlGetProcAddress (const GLubyte* name)
 | 
			
		||||
{
 | 
			
		||||
  static void* h = NULL;
 | 
			
		||||
  static void* gpa;
 | 
			
		||||
 | 
			
		||||
  if (h == NULL)
 | 
			
		||||
  {
 | 
			
		||||
    if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
 | 
			
		||||
    gpa = dlsym(h, "glXGetProcAddress");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (gpa != NULL)
 | 
			
		||||
    return ((void*(*)(const GLubyte*))gpa)(name);
 | 
			
		||||
  else
 | 
			
		||||
    return dlsym(h, (const char*)name);
 | 
			
		||||
}
 | 
			
		||||
#endif /* __sgi || __sun || GLEW_APPLE_GLX */
 | 
			
		||||
 | 
			
		||||
#if defined(__APPLE__)
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
@ -50,7 +73,14 @@ void* NSGLGetProcAddress (const GLubyte *name)
 | 
			
		||||
  {
 | 
			
		||||
    image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
 | 
			
		||||
  }
 | 
			
		||||
  return image ? dlsym(image, (const char*)name) : NULL;
 | 
			
		||||
  if( !image ) return NULL;
 | 
			
		||||
  void* addr = dlsym(image, (const char*)name);
 | 
			
		||||
  if( addr ) return addr;
 | 
			
		||||
#ifdef GLEW_APPLE_GLX
 | 
			
		||||
  return dlGetProcAddress( name ); // try next for glx symbols
 | 
			
		||||
#else
 | 
			
		||||
  return NULL;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
@ -74,34 +104,16 @@ void* NSGLGetProcAddress (const GLubyte *name)
 | 
			
		||||
	 symbol = NSLookupAndBindSymbol(symbolName); */
 | 
			
		||||
  symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;
 | 
			
		||||
  free(symbolName);
 | 
			
		||||
  return symbol ? NSAddressOfSymbol(symbol) : NULL;
 | 
			
		||||
  if( symbol ) return NSAddressOfSymbol(symbol);
 | 
			
		||||
#ifdef GLEW_APPLE_GLX
 | 
			
		||||
  return dlGetProcAddress( name ); // try next for glx symbols
 | 
			
		||||
#else
 | 
			
		||||
  return NULL;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif /* MAC_OS_X_VERSION_10_3 */
 | 
			
		||||
#endif /* __APPLE__ */
 | 
			
		||||
 | 
			
		||||
#if defined(__sgi) || defined (__sun)
 | 
			
		||||
#include <dlfcn.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
void* dlGetProcAddress (const GLubyte* name)
 | 
			
		||||
{
 | 
			
		||||
  static void* h = NULL;
 | 
			
		||||
  static void* gpa;
 | 
			
		||||
 | 
			
		||||
  if (h == NULL)
 | 
			
		||||
  {
 | 
			
		||||
    if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;
 | 
			
		||||
    gpa = dlsym(h, "glXGetProcAddress");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (gpa != NULL)
 | 
			
		||||
    return ((void*(*)(const GLubyte*))gpa)(name);
 | 
			
		||||
  else
 | 
			
		||||
    return dlsym(h, (const char*)name);
 | 
			
		||||
}
 | 
			
		||||
#endif /* __sgi || __sun */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Define glewGetProcAddress.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user