Removed return value of close callback.

This commit is contained in:
Camilla Berglund 2013-03-06 23:29:37 +01:00
parent 5d8fdc64f9
commit 64afb193e8
5 changed files with 18 additions and 26 deletions

View File

@ -181,9 +181,9 @@ while (!glfwWindowShouldClose(window))
} }
@endcode @endcode
You can intercept the setting of the close flag by setting a close callback with You can be notified when user is attempting to close the window by setting
@ref glfwSetWindowCloseCallback. The return value of the close callback becomes a close callback with @ref glfwSetWindowCloseCallback. The callback will be
the new value of the close flag. called immediately after the close flag has been set.
You can also set it yourself with @ref glfwSetWindowShouldClose. This can be You can also set it yourself with @ref glfwSetWindowShouldClose. This can be
useful if you want to interpret other kinds of input as closing the window, like useful if you want to interpret other kinds of input as closing the window, like

View File

@ -591,15 +591,11 @@ typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
/*! @brief The function signature for window close callbacks. /*! @brief The function signature for window close callbacks.
* @param[in] window The window that the user attempted to close. * @param[in] window The window that the user attempted to close.
* @return One of @c GL_TRUE or @c GL_FALSE.
* @ingroup window * @ingroup window
* *
* The return value of the close callback becomes the new value returned by
* @ref glfwWindowShouldClose.
*
* @sa glfwSetWindowCloseCallback * @sa glfwSetWindowCloseCallback
*/ */
typedef int (* GLFWwindowclosefun)(GLFWwindow*); typedef void (* GLFWwindowclosefun)(GLFWwindow*);
/*! @brief The function signature for window content refresh callbacks. /*! @brief The function signature for window content refresh callbacks.
* @param[in] window The window whose content needs to be refreshed. * @param[in] window The window whose content needs to be refreshed.
@ -1121,20 +1117,17 @@ GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, G
*/ */
GLFWAPI void glfwDestroyWindow(GLFWwindow* window); GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
/*! @brief Checks whether the specified window has been requested to close. /*! @brief Checks the close flag of the specified window.
* @param[in] window The window to query. * @param[in] window The window to query.
* @return @c GL_TRUE if the window should close, or @c GL_FALSE otherwise. * @return The value of the close flag.
* @ingroup window * @ingroup window
*/ */
GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
/*! @brief Sets whether the specified window should close. /*! @brief Sets the close flag of the specified window.
* @param[in] window The window whose value to change. * @param[in] window The window whose flag to change.
* @param[in] value The new value. * @param[in] value The new value.
* @ingroup window * @ingroup window
*
* @note Calling this from the close callback will have no effect, as whatever
* value you set will be overwritten by the return value of the close callback.
*/ */
GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
@ -1367,11 +1360,11 @@ GLFWAPI void glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbf
* @ingroup window * @ingroup window
* *
* This callback is called when the user attempts to close the window, i.e. * This callback is called when the user attempts to close the window, i.e.
* clicks the window's close widget. Calling @ref glfwDestroyWindow does not * for example by clicking the window's close widget. It is called immediately
* cause this callback to be called. * after the window's close flag has been set.
* *
* The return value of the close callback becomes the new value returned by * @remarks Calling @ref glfwDestroyWindow does not cause this callback to be
* @ref glfwWindowShouldClose. * called.
* *
* @remarks <b>Mac OS X:</b> Selecting Quit from the application menu will * @remarks <b>Mac OS X:</b> Selecting Quit from the application menu will
* trigger the close callback for all windows. * trigger the close callback for all windows.

View File

@ -126,10 +126,10 @@ void _glfwInputWindowDamage(_GLFWwindow* window)
void _glfwInputWindowCloseRequest(_GLFWwindow* window) void _glfwInputWindowCloseRequest(_GLFWwindow* window)
{ {
window->closed = GL_TRUE;
if (window->callbacks.close) if (window->callbacks.close)
window->closed = window->callbacks.close((GLFWwindow*) window); window->callbacks.close((GLFWwindow*) window);
else
window->closed = GL_TRUE;
} }

View File

@ -244,11 +244,11 @@ static void window_size_callback(GLFWwindow* window, int width, int height)
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
} }
static int window_close_callback(GLFWwindow* window) static void window_close_callback(GLFWwindow* window)
{ {
printf("%08x at %0.3f: Window close\n", counter++, glfwGetTime()); printf("%08x at %0.3f: Window close\n", counter++, glfwGetTime());
return closeable; glfwSetWindowShouldClose(window, closeable);
} }
static void window_refresh_callback(GLFWwindow* window) static void window_refresh_callback(GLFWwindow* window)

View File

@ -48,10 +48,9 @@ static void window_size_callback(GLFWwindow* window, int width, int height)
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
} }
static int window_close_callback(GLFWwindow* window) static void window_close_callback(GLFWwindow* window)
{ {
printf("Close callback triggered\n"); printf("Close callback triggered\n");
return GL_TRUE;
} }
static void key_callback(GLFWwindow* window, int key, int action) static void key_callback(GLFWwindow* window, int key, int action)