diff --git a/gl-natives/src/main/c/jaggl.c b/gl-natives/src/main/c/jaggl.c index 8eb14da..025ac93 100644 --- a/gl-natives/src/main/c/jaggl.c +++ b/gl-natives/src/main/c/jaggl.c @@ -98,45 +98,35 @@ #define JAGGL_RELEASE_STRING(env, str) \ (*env)->ReleaseStringUTFChars(env, str, str ## _str) -#if defined(JAGGL_EGL) -#define PFNGLCLIENTACTIVETEXTUREPROC PFNGLCLIENTACTIVETEXTUREARBPROC -#define PFNGLMULTITEXCOORD2FPROC PFNGLMULTITEXCOORD2FARBPROC -#define PFNGLMULTITEXCOORD2IPROC PFNGLMULTITEXCOORD2IARBPROC - -#define JAGGL_FORCE_LOCK(env) _JAGGL_GET(env) -#define JAGGL_FORCE_UNLOCK(env) - -#define JAGGL_LOCK(env) -#define JAGGL_UNLOCK(env) - -#define JAGGL_PROC_ADDR(name) eglGetProcAddress(name) -#elif defined(JAGGL_GLX) +#if defined(JAGGL_EGL) || defined(JAGGL_GLX) +// Mesa is missing some non-ARB PFN typedefs #define PFNGLCLIENTACTIVETEXTUREPROC PFNGLCLIENTACTIVETEXTUREARBPROC #define PFNGLMULTITEXCOORD2FPROC PFNGLMULTITEXCOORD2FARBPROC #define PFNGLMULTITEXCOORD2IPROC PFNGLMULTITEXCOORD2IARBPROC +#endif +#if defined(JAGGL_GLX) +// GLX requires locking around every OpenGL call #define JAGGL_FORCE_LOCK(env) _JAGGL_GET_AND_LOCK(env) #define JAGGL_FORCE_UNLOCK(env) _JAGGL_UNLOCK(env) #define JAGGL_LOCK(env) _JAGGL_GET_AND_LOCK(env) #define JAGGL_UNLOCK(env) _JAGGL_UNLOCK(env) - -#define JAGGL_PROC_ADDR(name) glXGetProcAddressARB((const GLubyte *) name) -#elif defined(JAGGL_WGL) +#else #define JAGGL_FORCE_LOCK(env) _JAGGL_GET(env) #define JAGGL_FORCE_UNLOCK(env) #define JAGGL_LOCK(env) #define JAGGL_UNLOCK(env) +#endif +#if defined(JAGGL_EGL) +#define JAGGL_PROC_ADDR(name) eglGetProcAddress(name) +#elif defined(JAGGL_GLX) +#define JAGGL_PROC_ADDR(name) glXGetProcAddressARB((const GLubyte *) name) +#elif defined(JAGGL_WGL) #define JAGGL_PROC_ADDR(name) wglGetProcAddress(name) #elif defined(JAGGL_CGL) -#define JAGGL_FORCE_LOCK(env) _JAGGL_GET(env) -#define JAGGL_FORCE_UNLOCK(env) - -#define JAGGL_LOCK(env) -#define JAGGL_UNLOCK(env) - #define JAGGL_PROC_ADDR(name) jaggl_proc_addr(name) #else #error Unsupported platform