From 9e30ae3bc0fef1f3d13e6c14a3bfd00b1b90a3da Mon Sep 17 00:00:00 2001 From: spanne Date: Sun, 2 Nov 2008 19:38:05 +0000 Subject: [PATCH] Make a wgl/glXGetProcAddress abstraction available internally. We will need this to get the new context creation function. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@747 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/freeglut_ext.c | 30 ++++++++++++----------- freeglut/freeglut/src/freeglut_internal.h | 2 ++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/freeglut/freeglut/src/freeglut_ext.c b/freeglut/freeglut/src/freeglut_ext.c index 6e4f693..613fcc2 100644 --- a/freeglut/freeglut/src/freeglut_ext.c +++ b/freeglut/freeglut/src/freeglut_ext.c @@ -29,7 +29,7 @@ #include #include "freeglut_internal.h" -static GLUTproc fghGetProcAddress( const char* procName ) +static GLUTproc fghGetGLUTProcAddress( const char* procName ) { /* optimization: quick initial check */ if( strncmp( procName, "glut", 4 ) != 0 ) @@ -199,23 +199,25 @@ static GLUTproc fghGetProcAddress( const char* procName ) } +SFG_Proc fghGetProcAddress( const char *procName ) +{ +#if TARGET_HOST_MS_WINDOWS + return (SFG_Proc)wglGetProcAddress( ( LPCSTR )procName ); +#elif TARGET_HOST_POSIX_X11 && defined( GLX_ARB_get_proc_address ) + return (SFG_Proc)glXGetProcAddressARB( ( const GLubyte * )procName ); +#else + return NULL; +#endif +} + + GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName ) { GLUTproc p; FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutGetProcAddress" ); - /* Try GLUT functions first */ - p = fghGetProcAddress( procName ); - if( p != NULL ) - return p; - - /* Try core GL functions */ -#if TARGET_HOST_MS_WINDOWS - return(GLUTproc)wglGetProcAddress( ( LPCSTR )procName ); -#elif TARGET_HOST_POSIX_X11 && defined( GLX_ARB_get_proc_address ) - return(GLUTproc)glXGetProcAddressARB( ( const GLubyte * )procName ); -#else - return NULL; -#endif + /* Try GLUT functions first, then core GL functions */ + p = fghGetGLUTProcAddress( procName ); + return ( p != NULL ) ? p : fghGetProcAddress( procName ); } diff --git a/freeglut/freeglut/src/freeglut_internal.h b/freeglut/freeglut/src/freeglut_internal.h index 90d1a37..d593a2c 100644 --- a/freeglut/freeglut/src/freeglut_internal.h +++ b/freeglut/freeglut/src/freeglut_internal.h @@ -909,6 +909,8 @@ void fgWarning( const char *fmt, ... ); int fgHintPresent(Window window, Atom property, Atom hint); #endif +SFG_Proc fghGetProcAddress( const char *procName ); + #endif /* FREEGLUT_INTERNAL_H */ /*** END OF FILE ***/