|
@@ -68,32 +68,6 @@ static void clearScrollOffsets(void)
|
|
|
////// GLFW internal API //////
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
-//========================================================================
|
|
|
-// Reset all window hints to their default values
|
|
|
-//========================================================================
|
|
|
-
|
|
|
-void _glfwSetDefaultWindowHints(void)
|
|
|
-{
|
|
|
- memset(&_glfwLibrary.hints, 0, sizeof(_glfwLibrary.hints));
|
|
|
-
|
|
|
- // The default is OpenGL with minimum version 1.0
|
|
|
- _glfwLibrary.hints.clientAPI = GLFW_OPENGL_API;
|
|
|
- _glfwLibrary.hints.glMajor = 1;
|
|
|
- _glfwLibrary.hints.glMinor = 0;
|
|
|
-
|
|
|
- // The default is to show the window and allow window resizing
|
|
|
- _glfwLibrary.hints.resizable = GL_TRUE;
|
|
|
- _glfwLibrary.hints.visible = GL_TRUE;
|
|
|
-
|
|
|
- // The default is 24 bits of color, 24 bits of depth and 8 bits of stencil
|
|
|
- _glfwLibrary.hints.redBits = 8;
|
|
|
- _glfwLibrary.hints.greenBits = 8;
|
|
|
- _glfwLibrary.hints.blueBits = 8;
|
|
|
- _glfwLibrary.hints.depthBits = 24;
|
|
|
- _glfwLibrary.hints.stencilBits = 8;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
//========================================================================
|
|
|
// Register window focus events
|
|
|
//========================================================================
|
|
@@ -107,8 +81,8 @@ void _glfwInputWindowFocus(_GLFWwindow* window, GLboolean activated)
|
|
|
|
|
|
_glfwLibrary.activeWindow = window;
|
|
|
|
|
|
- if (_glfwLibrary.windowFocusCallback)
|
|
|
- _glfwLibrary.windowFocusCallback(window, activated);
|
|
|
+ if (window->windowFocusCallback)
|
|
|
+ window->windowFocusCallback(window, activated);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -133,8 +107,8 @@ void _glfwInputWindowFocus(_GLFWwindow* window, GLboolean activated)
|
|
|
|
|
|
_glfwLibrary.activeWindow = NULL;
|
|
|
|
|
|
- if (_glfwLibrary.windowFocusCallback)
|
|
|
- _glfwLibrary.windowFocusCallback(window, activated);
|
|
|
+ if (window->windowFocusCallback)
|
|
|
+ window->windowFocusCallback(window, activated);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -162,8 +136,8 @@ void _glfwInputWindowSize(_GLFWwindow* window, int width, int height)
|
|
|
window->width = width;
|
|
|
window->height = height;
|
|
|
|
|
|
- if (_glfwLibrary.windowSizeCallback)
|
|
|
- _glfwLibrary.windowSizeCallback(window, width, height);
|
|
|
+ if (window->windowSizeCallback)
|
|
|
+ window->windowSizeCallback(window, width, height);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -178,8 +152,8 @@ void _glfwInputWindowIconify(_GLFWwindow* window, int iconified)
|
|
|
|
|
|
window->iconified = iconified;
|
|
|
|
|
|
- if (_glfwLibrary.windowIconifyCallback)
|
|
|
- _glfwLibrary.windowIconifyCallback(window, iconified);
|
|
|
+ if (window->windowIconifyCallback)
|
|
|
+ window->windowIconifyCallback(window, iconified);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -199,8 +173,8 @@ void _glfwInputWindowVisibility(_GLFWwindow* window, int visible)
|
|
|
|
|
|
void _glfwInputWindowDamage(_GLFWwindow* window)
|
|
|
{
|
|
|
- if (_glfwLibrary.windowRefreshCallback)
|
|
|
- _glfwLibrary.windowRefreshCallback(window);
|
|
|
+ if (window->windowRefreshCallback)
|
|
|
+ window->windowRefreshCallback(window);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -210,8 +184,8 @@ void _glfwInputWindowDamage(_GLFWwindow* window)
|
|
|
|
|
|
void _glfwInputWindowCloseRequest(_GLFWwindow* window)
|
|
|
{
|
|
|
- if (_glfwLibrary.windowCloseCallback)
|
|
|
- window->closeRequested = _glfwLibrary.windowCloseCallback(window);
|
|
|
+ if (window->windowCloseCallback)
|
|
|
+ window->closeRequested = window->windowCloseCallback(window);
|
|
|
else
|
|
|
window->closeRequested = GL_TRUE;
|
|
|
}
|
|
@@ -274,9 +248,6 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height,
|
|
|
wndconfig.monitor = (_GLFWmonitor*) monitor;
|
|
|
wndconfig.share = (_GLFWwindow*) share;
|
|
|
|
|
|
- // Reset to default values for the next call
|
|
|
- _glfwSetDefaultWindowHints();
|
|
|
-
|
|
|
// Check the OpenGL bits of the window config
|
|
|
if (!_glfwIsValidContextConfig(&wndconfig))
|
|
|
return GL_FALSE;
|
|
@@ -369,6 +340,38 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height,
|
|
|
}
|
|
|
|
|
|
|
|
|
+//========================================================================
|
|
|
+// Reset all window hints to their default values
|
|
|
+//========================================================================
|
|
|
+
|
|
|
+void glfwDefaultWindowHints(void)
|
|
|
+{
|
|
|
+ if (!_glfwInitialized)
|
|
|
+ {
|
|
|
+ _glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ memset(&_glfwLibrary.hints, 0, sizeof(_glfwLibrary.hints));
|
|
|
+
|
|
|
+ // The default is OpenGL with minimum version 1.0
|
|
|
+ _glfwLibrary.hints.clientAPI = GLFW_OPENGL_API;
|
|
|
+ _glfwLibrary.hints.glMajor = 1;
|
|
|
+ _glfwLibrary.hints.glMinor = 0;
|
|
|
+
|
|
|
+ // The default is to show the window and allow window resizing
|
|
|
+ _glfwLibrary.hints.resizable = GL_TRUE;
|
|
|
+ _glfwLibrary.hints.visible = GL_TRUE;
|
|
|
+
|
|
|
+ // The default is 24 bits of color, 24 bits of depth and 8 bits of stencil
|
|
|
+ _glfwLibrary.hints.redBits = 8;
|
|
|
+ _glfwLibrary.hints.greenBits = 8;
|
|
|
+ _glfwLibrary.hints.blueBits = 8;
|
|
|
+ _glfwLibrary.hints.depthBits = 24;
|
|
|
+ _glfwLibrary.hints.stencilBits = 8;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
//========================================================================
|
|
|
// Set hints for creating the window
|
|
|
//========================================================================
|
|
@@ -819,15 +822,17 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow handle)
|
|
|
// Set callback function for window size changes
|
|
|
//========================================================================
|
|
|
|
|
|
-GLFWAPI void glfwSetWindowSizeCallback(GLFWwindowsizefun cbfun)
|
|
|
+GLFWAPI void glfwSetWindowSizeCallback(GLFWwindow handle, GLFWwindowsizefun cbfun)
|
|
|
{
|
|
|
+ _GLFWwindow* window = (_GLFWwindow*) handle;
|
|
|
+
|
|
|
if (!_glfwInitialized)
|
|
|
{
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _glfwLibrary.windowSizeCallback = cbfun;
|
|
|
+ window->windowSizeCallback = cbfun;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -835,15 +840,17 @@ GLFWAPI void glfwSetWindowSizeCallback(GLFWwindowsizefun cbfun)
|
|
|
// Set callback function for window close events
|
|
|
//========================================================================
|
|
|
|
|
|
-GLFWAPI void glfwSetWindowCloseCallback(GLFWwindowclosefun cbfun)
|
|
|
+GLFWAPI void glfwSetWindowCloseCallback(GLFWwindow handle, GLFWwindowclosefun cbfun)
|
|
|
{
|
|
|
+ _GLFWwindow* window = (_GLFWwindow*) handle;
|
|
|
+
|
|
|
if (!_glfwInitialized)
|
|
|
{
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _glfwLibrary.windowCloseCallback = cbfun;
|
|
|
+ window->windowCloseCallback = cbfun;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -851,15 +858,17 @@ GLFWAPI void glfwSetWindowCloseCallback(GLFWwindowclosefun cbfun)
|
|
|
// Set callback function for window refresh events
|
|
|
//========================================================================
|
|
|
|
|
|
-GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindowrefreshfun cbfun)
|
|
|
+GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindow handle, GLFWwindowrefreshfun cbfun)
|
|
|
{
|
|
|
+ _GLFWwindow* window = (_GLFWwindow*) handle;
|
|
|
+
|
|
|
if (!_glfwInitialized)
|
|
|
{
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _glfwLibrary.windowRefreshCallback = cbfun;
|
|
|
+ window->windowRefreshCallback = cbfun;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -867,15 +876,17 @@ GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindowrefreshfun cbfun)
|
|
|
// Set callback function for window focus events
|
|
|
//========================================================================
|
|
|
|
|
|
-GLFWAPI void glfwSetWindowFocusCallback(GLFWwindowfocusfun cbfun)
|
|
|
+GLFWAPI void glfwSetWindowFocusCallback(GLFWwindow handle, GLFWwindowfocusfun cbfun)
|
|
|
{
|
|
|
+ _GLFWwindow* window = (_GLFWwindow*) handle;
|
|
|
+
|
|
|
if (!_glfwInitialized)
|
|
|
{
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _glfwLibrary.windowFocusCallback = cbfun;
|
|
|
+ window->windowFocusCallback = cbfun;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -883,15 +894,17 @@ GLFWAPI void glfwSetWindowFocusCallback(GLFWwindowfocusfun cbfun)
|
|
|
// Set callback function for window iconification events
|
|
|
//========================================================================
|
|
|
|
|
|
-GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindowiconifyfun cbfun)
|
|
|
+GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindow handle, GLFWwindowiconifyfun cbfun)
|
|
|
{
|
|
|
+ _GLFWwindow* window = (_GLFWwindow*) handle;
|
|
|
+
|
|
|
if (!_glfwInitialized)
|
|
|
{
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _glfwLibrary.windowIconifyCallback = cbfun;
|
|
|
+ window->windowIconifyCallback = cbfun;
|
|
|
}
|
|
|
|
|
|
|