blob: fc036bc089d367b98a46e86fc5ab3f027710a15e [file] [log] [blame]
Camilla Berglund3249f812010-09-07 17:34:51 +02001//========================================================================
Camilla Berglund6e553c72011-03-06 01:46:39 +01002// GLFW - An OpenGL library
Camilla Berglund3249f812010-09-07 17:34:51 +02003// Platform: Any
Camilla Berglund38b0ccb2010-09-07 17:41:26 +02004// API version: 3.0
Camilla Berglund3249f812010-09-07 17:34:51 +02005// WWW: http://www.glfw.org/
6//------------------------------------------------------------------------
7// Copyright (c) 2002-2006 Marcus Geelnard
8// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
9//
10// This software is provided 'as-is', without any express or implied
11// warranty. In no event will the authors be held liable for any damages
12// arising from the use of this software.
13//
14// Permission is granted to anyone to use this software for any purpose,
15// including commercial applications, and to alter it and redistribute it
16// freely, subject to the following restrictions:
17//
18// 1. The origin of this software must not be misrepresented; you must not
19// claim that you wrote the original software. If you use this software
20// in a product, an acknowledgment in the product documentation would
21// be appreciated but is not required.
22//
23// 2. Altered source versions must be plainly marked as such, and must not
24// be misrepresented as being the original software.
25//
26// 3. This notice may not be removed or altered from any source
27// distribution.
28//
29//========================================================================
30
31#ifndef _internal_h_
32#define _internal_h_
33
34//========================================================================
35// GLFWGLOBAL is a macro that places all global variables in the init.c
36// module (all other modules reference global variables as 'extern')
37//========================================================================
38
Camilla Berglundd46b2222010-09-08 17:30:21 +020039#if defined(_init_c_)
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010040 #define GLFWGLOBAL
Camilla Berglund3249f812010-09-07 17:34:51 +020041#else
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010042 #define GLFWGLOBAL extern
Camilla Berglund3249f812010-09-07 17:34:51 +020043#endif
44
45
46//========================================================================
47// Input handling definitions
48//========================================================================
49
50// Internal key and button state/action definitions
51#define GLFW_STICK 2
52
53
Camilla Berglund1a998272012-04-22 21:49:38 +020054//========================================================================
55// Internal type declarations
56//========================================================================
57
58typedef struct _GLFWhints _GLFWhints;
59typedef struct _GLFWwndconfig _GLFWwndconfig;
60typedef struct _GLFWfbconfig _GLFWfbconfig;
61typedef struct _GLFWwindow _GLFWwindow;
62typedef struct _GLFWlibrary _GLFWlibrary;
63
64
Camilla Berglund3249f812010-09-07 17:34:51 +020065//------------------------------------------------------------------------
Camilla Berglund135194a2010-09-09 18:15:32 +020066// Platform specific definitions goes in platform.h (which also includes
67// glfw.h)
68//------------------------------------------------------------------------
69
Camilla Berglund3ca63a02010-09-17 00:54:11 +020070#include "config.h"
Camilla Berglund3be0c052010-11-17 14:52:47 +010071
Camilla Berglund53f4f542011-07-26 15:16:34 +020072#include "../include/GL/glfw3.h"
Camilla Berglunda98c66c2011-09-22 14:15:07 +020073
74// This path may need to be changed if you build GLFW using your own setup
75// We ship and use our own copy of glext.h since GLFW uses fairly new
76// extensions and not all operating systems come with an up-to-date version
Camilla Berglund3b733b92011-09-06 17:32:41 +020077#include "../support/GL/glext.h"
Camilla Berglund3be0c052010-11-17 14:52:47 +010078
Camilla Berglund53f4f542011-07-26 15:16:34 +020079#if defined(_GLFW_COCOA_NSGL)
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010080 #include "cocoa_platform.h"
Camilla Berglund53f4f542011-07-26 15:16:34 +020081#elif defined(_GLFW_WIN32_WGL)
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010082 #include "win32_platform.h"
Camilla Berglund53f4f542011-07-26 15:16:34 +020083#elif defined(_GLFW_X11_GLX)
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010084 #include "x11_platform.h"
Camilla Berglund53f4f542011-07-26 15:16:34 +020085#else
Camilla Berglundf6dfaf52012-02-05 16:56:26 +010086 #error "No supported platform selected"
Camilla Berglund53f4f542011-07-26 15:16:34 +020087#endif
Camilla Berglund135194a2010-09-09 18:15:32 +020088
Camilla Berglund99ddce32010-10-04 18:17:53 +020089
Camilla Berglund135194a2010-09-09 18:15:32 +020090//------------------------------------------------------------------------
Camilla Berglund12d17b92010-09-09 20:18:10 +020091// Window hints, set by glfwOpenWindowHint and consumed by glfwOpenWindow
92// A bucket of semi-random stuff lumped together for historical reasons
Camilla Berglund3249f812010-09-07 17:34:51 +020093// This is used only by the platform independent code and only to store
94// parameters passed to us by glfwOpenWindowHint
95//------------------------------------------------------------------------
Camilla Berglund99ddce32010-10-04 18:17:53 +020096struct _GLFWhints
Camilla Berglund12d17b92010-09-09 20:18:10 +020097{
Camilla Berglund950a3be2010-09-09 19:58:51 +020098 int redBits;
99 int greenBits;
100 int blueBits;
101 int alphaBits;
102 int depthBits;
103 int stencilBits;
Camilla Berglund3249f812010-09-07 17:34:51 +0200104 int refreshRate;
105 int accumRedBits;
106 int accumGreenBits;
107 int accumBlueBits;
108 int accumAlphaBits;
109 int auxBuffers;
Camilla Berglund70b9a1f2010-10-25 12:36:14 +0200110 GLboolean stereo;
Camilla Berglunda18cd1b2011-11-02 16:56:34 +0100111 GLboolean resizable;
Camilla Berglund3249f812010-09-07 17:34:51 +0200112 int samples;
113 int glMajor;
114 int glMinor;
Camilla Berglund70b9a1f2010-10-25 12:36:14 +0200115 GLboolean glForward;
116 GLboolean glDebug;
Camilla Berglund3249f812010-09-07 17:34:51 +0200117 int glProfile;
Camilla Berglundd43e0b52011-03-07 20:51:34 +0100118 int glRobustness;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200119};
Camilla Berglund3249f812010-09-07 17:34:51 +0200120
121
122//------------------------------------------------------------------------
Camilla Berglund3249f812010-09-07 17:34:51 +0200123// Parameters relating to the creation of the context and window but not
124// directly related to the properties of the framebuffer
125// This is used to pass window and context creation parameters from the
126// platform independent code to the platform specific code
127//------------------------------------------------------------------------
Camilla Berglund99ddce32010-10-04 18:17:53 +0200128struct _GLFWwndconfig
Camilla Berglund12d17b92010-09-09 20:18:10 +0200129{
Camilla Berglund99ddce32010-10-04 18:17:53 +0200130 int mode;
131 const char* title;
132 int refreshRate;
Camilla Berglunda18cd1b2011-11-02 16:56:34 +0100133 GLboolean resizable;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200134 int glMajor;
135 int glMinor;
Camilla Berglund70b9a1f2010-10-25 12:36:14 +0200136 GLboolean glForward;
137 GLboolean glDebug;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200138 int glProfile;
Camilla Berglundd43e0b52011-03-07 20:51:34 +0100139 int glRobustness;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200140 _GLFWwindow* share;
141};
Camilla Berglund3249f812010-09-07 17:34:51 +0200142
143
144//------------------------------------------------------------------------
145// Framebuffer configuration descriptor, i.e. buffers and their sizes
146// Also a platform specific ID used to map back to the actual backend APIs
147// This is used to pass framebuffer parameters from the platform independent
148// code to the platform specific code, and also to enumerate and select
149// available framebuffer configurations
150//------------------------------------------------------------------------
Camilla Berglund99ddce32010-10-04 18:17:53 +0200151struct _GLFWfbconfig
Camilla Berglund12d17b92010-09-09 20:18:10 +0200152{
Camilla Berglund3249f812010-09-07 17:34:51 +0200153 int redBits;
154 int greenBits;
155 int blueBits;
156 int alphaBits;
157 int depthBits;
158 int stencilBits;
159 int accumRedBits;
160 int accumGreenBits;
161 int accumBlueBits;
162 int accumAlphaBits;
163 int auxBuffers;
Camilla Berglund70b9a1f2010-10-25 12:36:14 +0200164 GLboolean stereo;
Camilla Berglund3249f812010-09-07 17:34:51 +0200165 int samples;
166 GLFWintptr platformID;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200167};
Camilla Berglund3249f812010-09-07 17:34:51 +0200168
169
Camilla Berglund135194a2010-09-09 18:15:32 +0200170//------------------------------------------------------------------------
171// Window structure
172//------------------------------------------------------------------------
Camilla Berglund99ddce32010-10-04 18:17:53 +0200173struct _GLFWwindow
Camilla Berglund12d17b92010-09-09 20:18:10 +0200174{
Camilla Berglund326d9972010-09-10 00:06:23 +0200175 struct _GLFWwindow* next;
176
Camilla Berglund12d17b92010-09-09 20:18:10 +0200177 // Window settings and state
Camilla Berglund12d17b92010-09-09 20:18:10 +0200178 GLboolean iconified; // GL_TRUE if this window is iconified
Camilla Berglund867e7472010-09-16 06:02:44 +0200179 GLboolean closeRequested; // GL_TRUE if this window should be closed
Camilla Berglund12d17b92010-09-09 20:18:10 +0200180 int width, height;
Camilla Berglund318f7312010-09-14 03:53:22 +0200181 int positionX, positionY;
Camilla Berglund12d17b92010-09-09 20:18:10 +0200182 int mode; // GLFW_WINDOW or GLFW_FULLSCREEN
Camilla Berglunda18cd1b2011-11-02 16:56:34 +0100183 GLboolean resizable; // GL_TRUE if user may resize this window
Camilla Berglund12d17b92010-09-09 20:18:10 +0200184 int refreshRate; // monitor refresh rate
Camilla Berglund48f5a7e2010-09-09 22:44:38 +0200185 void* userPointer;
Camilla Berglund135194a2010-09-09 18:15:32 +0200186
Camilla Berglund12d17b92010-09-09 20:18:10 +0200187 // Window input state
Camilla Berglund135194a2010-09-09 18:15:32 +0200188 GLboolean stickyKeys;
189 GLboolean stickyMouseButtons;
190 GLboolean keyRepeat;
Camilla Berglundce288a82012-02-04 00:51:35 +0100191 GLboolean systemKeys; // system keys enabled flag
Camilla Berglund2660b272011-10-13 15:20:59 +0200192 int cursorPosX, cursorPosY;
Camilla Berglundb1656d72011-09-06 13:55:29 +0200193 int cursorMode;
Camilla Berglund4ef9aec2012-03-28 21:54:09 +0200194 double scrollX, scrollY;
Camilla Berglund135194a2010-09-09 18:15:32 +0200195 char mouseButton[GLFW_MOUSE_BUTTON_LAST + 1];
196 char key[GLFW_KEY_LAST + 1];
Camilla Berglund135194a2010-09-09 18:15:32 +0200197
Camilla Berglund135194a2010-09-09 18:15:32 +0200198 // Framebuffer attributes
Camilla Berglund053737e2012-08-02 01:18:35 +0200199 GLint redBits;
200 GLint greenBits;
201 GLint blueBits;
202 GLint alphaBits;
203 GLint depthBits;
204 GLint stencilBits;
205 GLint accumRedBits;
206 GLint accumGreenBits;
207 GLint accumBlueBits;
208 GLint accumAlphaBits;
209 GLint auxBuffers;
Camilla Berglund135194a2010-09-09 18:15:32 +0200210 GLboolean stereo;
Camilla Berglund053737e2012-08-02 01:18:35 +0200211 GLint samples;
Camilla Berglund135194a2010-09-09 18:15:32 +0200212
213 // OpenGL extensions and context attributes
214 int glMajor, glMinor, glRevision;
Camilla Berglund70b9a1f2010-10-25 12:36:14 +0200215 GLboolean glForward, glDebug;
216 int glProfile;
Camilla Berglundd43e0b52011-03-07 20:51:34 +0100217 int glRobustness;
Camilla Berglund135194a2010-09-09 18:15:32 +0200218 PFNGLGETSTRINGIPROC GetStringi;
219
Camilla Berglunde9eb8412010-10-14 16:40:10 +0200220 // These are defined in the current port's platform.h
Camilla Berglund135194a2010-09-09 18:15:32 +0200221 _GLFW_PLATFORM_WINDOW_STATE;
Camilla Berglund32287552010-09-09 20:36:23 +0200222 _GLFW_PLATFORM_CONTEXT_STATE;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200223};
Camilla Berglund135194a2010-09-09 18:15:32 +0200224
225
226//------------------------------------------------------------------------
227// Library global data
228//------------------------------------------------------------------------
Camilla Berglund99ddce32010-10-04 18:17:53 +0200229struct _GLFWlibrary
Camilla Berglund12d17b92010-09-09 20:18:10 +0200230{
Camilla Berglund2630d492010-10-13 04:04:43 +0200231 _GLFWhints hints;
Camilla Berglund326d9972010-09-10 00:06:23 +0200232
Camilla Berglund2630d492010-10-13 04:04:43 +0200233 _GLFWwindow* windowListHead;
234 _GLFWwindow* currentWindow;
235 _GLFWwindow* activeWindow;
Camilla Berglund2630d492010-10-13 04:04:43 +0200236
Camilla Berglund4044c2d2010-10-24 18:28:55 +0200237 GLFWwindowsizefun windowSizeCallback;
238 GLFWwindowclosefun windowCloseCallback;
239 GLFWwindowrefreshfun windowRefreshCallback;
240 GLFWwindowfocusfun windowFocusCallback;
241 GLFWwindowiconifyfun windowIconifyCallback;
242 GLFWmousebuttonfun mouseButtonCallback;
Camilla Berglundcef9dea2012-06-22 13:53:02 +0200243 GLFWcursorposfun cursorPosCallback;
Camilla Berglund1ddafc22012-01-30 22:30:40 +0100244 GLFWcursorenterfun cursorEnterCallback;
Camilla Berglund4044c2d2010-10-24 18:28:55 +0200245 GLFWscrollfun scrollCallback;
246 GLFWkeyfun keyCallback;
247 GLFWcharfun charCallback;
248
Camilla Berglund2630d492010-10-13 04:04:43 +0200249 GLFWgammaramp currentRamp;
250 GLFWgammaramp originalRamp;
251 int originalRampSize;
Camilla Berglund79bef682012-05-24 11:46:51 +0200252 GLboolean rampChanged;
Camilla Berglund135194a2010-09-09 18:15:32 +0200253
Camilla Berglunde9eb8412010-10-14 16:40:10 +0200254 // This is defined in the current port's platform.h
Camilla Berglund21e77fe2012-04-22 15:53:02 +0200255 _GLFW_PLATFORM_LIBRARY_WINDOW_STATE;
256 _GLFW_PLATFORM_LIBRARY_OPENGL_STATE;
Camilla Berglund99ddce32010-10-04 18:17:53 +0200257};
Camilla Berglund135194a2010-09-09 18:15:32 +0200258
259
Camilla Berglund3249f812010-09-07 17:34:51 +0200260//========================================================================
261// System independent global variables (GLFW internals)
262//========================================================================
263
264// Flag indicating if GLFW has been initialized
Camilla Berglundd46b2222010-09-08 17:30:21 +0200265#if defined(_init_c_)
Camilla Berglund12d17b92010-09-09 20:18:10 +0200266GLboolean _glfwInitialized = GL_FALSE;
Camilla Berglund3249f812010-09-07 17:34:51 +0200267#else
Camilla Berglund12d17b92010-09-09 20:18:10 +0200268GLFWGLOBAL GLboolean _glfwInitialized;
Camilla Berglund3249f812010-09-07 17:34:51 +0200269#endif
270
Camilla Berglund135194a2010-09-09 18:15:32 +0200271GLFWGLOBAL _GLFWlibrary _glfwLibrary;
272
Camilla Berglund3249f812010-09-07 17:34:51 +0200273
274//========================================================================
275// Prototypes for platform specific implementation functions
276//========================================================================
277
278// Init/terminate
Camilla Berglundd46b2222010-09-08 17:30:21 +0200279int _glfwPlatformInit(void);
280int _glfwPlatformTerminate(void);
Camilla Berglundd6fe4472010-09-13 18:05:59 +0200281const char* _glfwPlatformGetVersionString(void);
Camilla Berglundf5d74c42010-09-09 21:06:59 +0200282
Camilla Berglundce288a82012-02-04 00:51:35 +0100283// Input
Camilla Berglund135194a2010-09-09 18:15:32 +0200284void _glfwPlatformEnableSystemKeys(_GLFWwindow* window);
285void _glfwPlatformDisableSystemKeys(_GLFWwindow* window);
Camilla Berglundcef9dea2012-06-22 13:53:02 +0200286void _glfwPlatformSetCursorPos(_GLFWwindow* window, int x, int y);
Camilla Berglundc1dd2452012-04-06 14:37:31 +0200287void _glfwPlatformSetCursorMode(_GLFWwindow* window, int mode);
Camilla Berglund3249f812010-09-07 17:34:51 +0200288
289// Fullscreen
Camilla Berglundd46b2222010-09-08 17:30:21 +0200290int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount);
291void _glfwPlatformGetDesktopMode(GLFWvidmode* mode);
Camilla Berglund3249f812010-09-07 17:34:51 +0200292
Camilla Berglund2630d492010-10-13 04:04:43 +0200293// Gamma ramp
Camilla Berglund85bcd1f2010-10-13 22:42:31 +0200294void _glfwPlatformGetGammaRamp(GLFWgammaramp* ramp);
Camilla Berglund2630d492010-10-13 04:04:43 +0200295void _glfwPlatformSetGammaRamp(const GLFWgammaramp* ramp);
296
Ralph Eastwood31c91542011-09-21 10:09:47 +0100297// Clipboard
Camilla Berglundbf1ada02012-04-09 16:00:54 +0200298void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string);
Camilla Berglundf8687122012-04-12 00:51:58 +0200299const char* _glfwPlatformGetClipboardString(_GLFWwindow* window);
Ralph Eastwood31c91542011-09-21 10:09:47 +0100300
Camilla Berglund3249f812010-09-07 17:34:51 +0200301// Joystick
Camilla Berglundd46b2222010-09-08 17:30:21 +0200302int _glfwPlatformGetJoystickParam(int joy, int param);
303int _glfwPlatformGetJoystickPos(int joy, float* pos, int numaxes);
304int _glfwPlatformGetJoystickButtons(int joy, unsigned char* buttons, int numbuttons);
Camilla Berglund3249f812010-09-07 17:34:51 +0200305
306// Time
Camilla Berglundd46b2222010-09-08 17:30:21 +0200307double _glfwPlatformGetTime(void);
308void _glfwPlatformSetTime(double time);
Camilla Berglund3249f812010-09-07 17:34:51 +0200309
310// Window management
Camilla Berglund819d0442010-09-13 23:42:51 +0200311int _glfwPlatformOpenWindow(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWfbconfig* fbconfig);
Camilla Berglund135194a2010-09-09 18:15:32 +0200312void _glfwPlatformCloseWindow(_GLFWwindow* window);
313void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title);
314void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height);
315void _glfwPlatformSetWindowPos(_GLFWwindow* window, int x, int y);
316void _glfwPlatformIconifyWindow(_GLFWwindow* window);
317void _glfwPlatformRestoreWindow(_GLFWwindow* window);
Camilla Berglund135194a2010-09-09 18:15:32 +0200318
319// Event management
320void _glfwPlatformPollEvents(void);
321void _glfwPlatformWaitEvents(void);
322
323// OpenGL context management
Camilla Berglundc1ab73b2011-07-27 16:01:27 +0200324void _glfwPlatformMakeContextCurrent(_GLFWwindow* window);
Camilla Berglundd46b2222010-09-08 17:30:21 +0200325void _glfwPlatformSwapBuffers(void);
326void _glfwPlatformSwapInterval(int interval);
327void _glfwPlatformRefreshWindowParams(void);
Camilla Berglund135194a2010-09-09 18:15:32 +0200328int _glfwPlatformExtensionSupported(const char* extension);
Camilla Berglundbf42c3c2012-06-05 00:16:40 +0200329GLFWglproc _glfwPlatformGetProcAddress(const char* procname);
Camilla Berglundc1ab73b2011-07-27 16:01:27 +0200330void _glfwPlatformCopyContext(_GLFWwindow* src, _GLFWwindow* dst, unsigned long mask);
Camilla Berglund3249f812010-09-07 17:34:51 +0200331
332
333//========================================================================
334// Prototypes for platform independent internal functions
335//========================================================================
336
Camilla Berglund3089e602010-09-16 03:48:19 +0200337// Fullscren management (fullscreen.c)
338void _glfwSplitBPP(int bpp, int* red, int* green, int* blue);
339
Camilla Berglund596f56f2011-03-07 13:56:28 +0100340// Error handling (error.c)
Camilla Berglundf1e7d7c2010-11-23 17:45:23 +0100341void _glfwSetError(int error, const char* description);
Camilla Berglundd6fe4472010-09-13 18:05:59 +0200342
Camilla Berglund3249f812010-09-07 17:34:51 +0200343// Window management (window.c)
Camilla Berglund0f481cb2011-03-07 14:16:31 +0100344void _glfwSetDefaultWindowHints(void);
Camilla Berglund3249f812010-09-07 17:34:51 +0200345
Camilla Berglundb016d642012-01-31 15:27:15 +0100346// Window event notification (window.c)
Camilla Berglundd0840bd2011-10-09 17:10:40 +0200347void _glfwInputWindowFocus(_GLFWwindow* window, GLboolean activated);
348void _glfwInputWindowPos(_GLFWwindow* window, int x, int y);
349void _glfwInputWindowSize(_GLFWwindow* window, int width, int height);
350void _glfwInputWindowIconify(_GLFWwindow* window, int iconified);
Camilla Berglund72ef5372011-10-09 21:12:13 +0200351void _glfwInputWindowDamage(_GLFWwindow* window);
Camilla Berglundd0840bd2011-10-09 17:10:40 +0200352
Camilla Berglundb016d642012-01-31 15:27:15 +0100353// Input event notification (input.c)
Camilla Berglund135194a2010-09-09 18:15:32 +0200354void _glfwInputKey(_GLFWwindow* window, int key, int action);
Camilla Berglund93ea3412010-09-09 19:33:37 +0200355void _glfwInputChar(_GLFWwindow* window, int character);
Camilla Berglund4ef9aec2012-03-28 21:54:09 +0200356void _glfwInputScroll(_GLFWwindow* window, double x, double y);
Camilla Berglund135194a2010-09-09 18:15:32 +0200357void _glfwInputMouseClick(_GLFWwindow* window, int button, int action);
Camilla Berglundd0840bd2011-10-09 17:10:40 +0200358void _glfwInputCursorMotion(_GLFWwindow* window, int x, int y);
Camilla Berglundc4806b92012-01-30 22:59:38 +0100359void _glfwInputCursorEnter(_GLFWwindow* window, int entered);
Camilla Berglund3249f812010-09-07 17:34:51 +0200360
Camilla Berglund596f56f2011-03-07 13:56:28 +0100361// OpenGL context helpers (opengl.c)
Camilla Berglundd46b2222010-09-08 17:30:21 +0200362int _glfwStringInExtensionString(const char* string, const GLubyte* extensions);
Camilla Berglundd46b2222010-09-08 17:30:21 +0200363const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
364 const _GLFWfbconfig* alternatives,
365 unsigned int count);
Camilla Berglund59896c32012-08-02 14:42:24 +0200366GLboolean _glfwRefreshContextParams(void);
Camilla Berglund19be24a2011-03-07 14:55:11 +0100367GLboolean _glfwIsValidContextConfig(_GLFWwndconfig* wndconfig);
Camilla Berglund59896c32012-08-02 14:42:24 +0200368GLboolean _glfwIsValidContext(_GLFWwndconfig* wndconfig);
Camilla Berglund3249f812010-09-07 17:34:51 +0200369
370
371#endif // _internal_h_