X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=glimports.hpp;h=b5cdb4b279e6b80c0f94683b5aa4e4619195fc0a;hb=bd5e1649f9c658ddfa3090ec70fb3f741a6ded76;hp=5277a0aabd2cc6871f0bc253e28a7dd571563bcc;hpb=676965ea5090a00ebb9f6f47da1c2a03bad7060d;p=apitrace diff --git a/glimports.hpp b/glimports.hpp index 5277a0a..b5cdb4b 100644 --- a/glimports.hpp +++ b/glimports.hpp @@ -30,34 +30,52 @@ #ifndef _GLIMPORTS_HPP_ #define _GLIMPORTS_HPP_ -#ifdef _WIN32 + +// Prevent including system's glext.h +#define __glext_h_ + +// Some functions take GLenum disguised as GLint. Apple noticed and fixed it +// in the Mac OS X 10.6.x gl.h headers. Regardless, C++ typechecking rules +// force the wrappers to match the prototype precisely. +#if defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_7) +#define GLenum_int GLenum +#else +#define GLenum_int GLint +#endif + + +#if defined(_WIN32) #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif #include +#include -#else /* !_WIN32 */ +#elif defined(__APPLE__) + +#include + +#else #include +#include #endif /* !_WIN32 */ -// Prevent including system's glext.h -#define __glext_h_ - -#include +// Include our own glext.h #undef __glext_h_ - #include "glext/glext.h" + #ifndef GL_TEXTURE_INDEX_SIZE_EXT #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #endif -#ifdef _WIN32 + +#if defined(_WIN32) #include "glext/wglext.h" @@ -70,7 +88,7 @@ #define PFD_SUPPORT_COMPOSITION 0x00008000 #endif -#ifdef __MINGW32__ +#ifndef WGL_SWAPMULTIPLE_MAX extern "C" typedef struct _WGLSWAP @@ -81,16 +99,42 @@ typedef struct _WGLSWAP #define WGL_SWAPMULTIPLE_MAX 16 -#endif /* __MINGW32__ */ +#endif /* !WGL_SWAPMULTIPLE_MAX */ + +#elif defined(__APPLE__) + +#include +#include +#include + +#ifndef CGL_VERSION_1_3 +#define kCGLPFAOpenGLProfile 99 +#define kCGLOGLPVersion_Legacy 0x1000 +#define kCGLOGLPVersion_3_2_Core 0x3200 +#endif + +extern "C" { + +// From http://www.opensource.apple.com/source/gdb/gdb-954/libcheckpoint/cpcg.c +typedef void * CGSConnectionID; +typedef int CGSWindowID; +typedef int CGSSurfaceID; + +CGLError CGLSetSurface(CGLContextObj ctx, CGSConnectionID cid, CGSWindowID wid, CGSSurfaceID sid); +CGLError CGLGetSurface(CGLContextObj ctx, CGSConnectionID* cid, CGSWindowID* wid, CGSSurfaceID* sid); +CGLError CGLUpdateContext(CGLContextObj ctx); + +} -#else /* !_WIN32 */ +#else #include #include "glext/glxext.h" -/* Prevent collision with Trace::Bool */ +/* Prevent collision with trace::Bool */ #undef Bool -#endif /* !_WIN32 */ +#endif + #endif /* _GLIMPORTS_HPP_ */