diff --git a/src/libs/mesa/glut/glutGet.cpp b/src/libs/mesa/glut/glutGet.cpp index 9bc2d199a8..3a653af722 100644 --- a/src/libs/mesa/glut/glutGet.cpp +++ b/src/libs/mesa/glut/glutGet.cpp @@ -221,3 +221,15 @@ int glutGetModifiers() { return gState.modifierKeys; } + +#ifdef __HAIKU__ + +GLUTproc +__glutGetProcAddress(const char* procName) +{ + if (gState.currentWindow) + return (GLUTproc) gState.currentWindow->GetGLProcAddress(procName); + return NULL; +} + +#endif diff --git a/src/libs/mesa/glut/glut_ext.c b/src/libs/mesa/glut/glut_ext.c index ed902111af..147b5b4803 100644 --- a/src/libs/mesa/glut/glut_ext.c +++ b/src/libs/mesa/glut/glut_ext.c @@ -176,24 +176,30 @@ static struct name_address_pair glut_functions[] = { }; +#ifdef __HAIKU__ +extern GLUTproc __glutGetProcAddress(const char* procName); +#endif + /* XXX This isn't an official GLUT function, yet */ GLUTproc GLUTAPIENTRY glutGetProcAddress(const char *procName) { - /* Try GLUT functions first */ - int i; - for (i = 0; glut_functions[i].name; i++) { - if (strcmp(glut_functions[i].name, procName) == 0) - return glut_functions[i].address; - } + /* Try GLUT functions first */ + int i; + for (i = 0; glut_functions[i].name; i++) { + if (strcmp(glut_functions[i].name, procName) == 0) + return glut_functions[i].address; + } - /* Try core GL functions */ + /* Try core GL functions */ #if defined(_WIN32) - return (GLUTProc) wglGetProcAddress((LPCSTR) procName); + return (GLUTProc) wglGetProcAddress((LPCSTR) procName); #elif defined(GLX_ARB_get_proc_address) - return (GLUTProc) glXGetProcAddressARB((const GLubyte *) procName); + return (GLUTProc) glXGetProcAddressARB((const GLubyte *) procName); +#elif defined(__HAIKU__) + return __glutGetProcAddress(procName); #else - return NULL; + return NULL; #endif }