diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index 029ec35d..b8a0bae6 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -1001,6 +1001,8 @@ GLFWAPI const char* glfwGetVersionString(void); * * @remarks This function may be called before @ref glfwInit. * + * @note This function may only be called from the main thread. + * * @note The error callback is called by the thread where the error was * generated. If you are using GLFW from multiple threads, your error callback * needs to be written accordingly. @@ -1023,6 +1025,8 @@ GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); * set to zero if an error occurred. * @return An array of monitor handles, or `NULL` if an error occurred. * + * @note This function may only be called from the main thread. + * * @note The returned array is allocated and freed by GLFW. You should not * free it yourself. * @@ -1043,6 +1047,8 @@ GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); * * @return The primary monitor, or `NULL` if an error occurred. * + * @note This function may only be called from the main thread. + * * @sa glfwGetMonitors * * @ingroup monitor @@ -1058,6 +1064,8 @@ GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. * + * @note This function may only be called from the main thread. + * * @ingroup monitor */ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); @@ -1073,6 +1081,8 @@ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); * @param[out] height Where to store the height, in mm, of the monitor's * display area, or `NULL`. * + * @note This function may only be called from the main thread. + * * @note Some operating systems do not provide accurate information, either * because the monitor's EDID data is incorrect, or because the driver does not * report it accurately. @@ -1090,6 +1100,8 @@ GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* width, int* h * @return The UTF-8 encoded name of the monitor, or `NULL` if an error * occurred. * + * @note This function may only be called from the main thread. + * * @note The returned string is allocated and freed by GLFW. You should not * free it yourself. * @@ -1108,6 +1120,8 @@ GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @bug **X11:** This callback is not yet called on monitor configuration * changes. * @@ -1127,6 +1141,8 @@ GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); * array. This is set to zero if an error occurred. * @return An array of video modes, or `NULL` if an error occurred. * + * @note This function may only be called from the main thread. + * * @note The returned array is allocated and freed by GLFW. You should not * free it yourself. * @@ -1148,6 +1164,8 @@ GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); * @param[in] monitor The monitor to query. * @return The current mode of the monitor, or `NULL` if an error occurred. * + * @note This function may only be called from the main thread. + * * @note The returned struct is allocated and freed by GLFW. You should not * free it yourself. * @@ -1165,6 +1183,8 @@ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); * @param[in] monitor The monitor whose gamma ramp to set. * @param[in] gamma The desired exponent. * + * @note This function may only be called from the main thread. + * * @ingroup monitor */ GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); @@ -1176,6 +1196,8 @@ GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); * @param[in] monitor The monitor to query. * @return The current gamma ramp, or `NULL` if an error occurred. * + * @note This function may only be called from the main thread. + * * @note The value arrays of the returned ramp are allocated and freed by GLFW. * You should not free them yourself. * @@ -1190,6 +1212,8 @@ GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); * @param[in] monitor The monitor whose gamma ramp to set. * @param[in] ramp The gamma ramp to use. * + * @note This function may only be called from the main thread. + * * @note Gamma ramp sizes other than 256 are not supported by all hardware. * * @ingroup monitor @@ -1374,6 +1398,8 @@ GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); * @param[out] ypos Where to store the y-coordinate of the upper-left corner of * the client area, or `NULL`. * + * @note This function may only be called from the main thread. + * * @sa glfwSetWindowPos * * @ingroup window @@ -1420,6 +1446,8 @@ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); * @param[out] height Where to store the height, in screen coordinates, of the * client area, or `NULL`. * + * @note This function may only be called from the main thread. + * * @sa glfwSetWindowSize * * @ingroup window @@ -1462,6 +1490,8 @@ GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); * @param[out] height Where to store the height, in pixels, of the framebuffer, * or `NULL`. * + * @note This function may only be called from the main thread. + * * @sa glfwSetFramebufferSizeCallback * * @ingroup window @@ -1542,6 +1572,8 @@ GLFWAPI void glfwHideWindow(GLFWwindow* window); * @param[in] window The window to query. * @return The monitor, or `NULL` if the window is in windowed mode. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); @@ -1556,6 +1588,8 @@ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); * return. * @return The value of the attribute, or zero if an error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); @@ -1569,6 +1603,8 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); * @param[in] window The window whose pointer to set. * @param[in] pointer The new value. * + * @remarks This function may be called from any thread. + * * @sa glfwGetWindowUserPointer * * @ingroup window @@ -1582,6 +1618,8 @@ GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); * * @param[in] window The window whose pointer to return. * + * @remarks This function may be called from any thread. + * * @sa glfwSetWindowUserPointer * * @ingroup window @@ -1600,6 +1638,8 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun); @@ -1616,6 +1656,8 @@ GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindow * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun); @@ -1643,6 +1685,8 @@ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwind * @remarks **OS X:** Selecting Quit from the application menu will * trigger the close callback for all windows. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); @@ -1663,6 +1707,8 @@ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwi * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @note On compositing window systems such as Aero, Compiz or Aqua, where the * window contents are saved off-screen, this callback may be called only very * infrequently or never at all. @@ -1687,6 +1733,8 @@ GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GL * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun); @@ -1702,6 +1750,8 @@ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwi * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun); @@ -1717,6 +1767,8 @@ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GL * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup window */ GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun); @@ -1812,6 +1864,8 @@ GLFWAPI void glfwPostEmptyEvent(void); * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or * `GLFW_STICKY_MOUSE_BUTTONS`. * + * @note This function may only be called from the main thread. + * * @sa glfwSetInputMode * * @ingroup input @@ -1850,6 +1904,8 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); * you are only interested in whether mouse buttons have been pressed but not * when or in which order. * + * @note This function may only be called from the main thread. + * * @sa glfwGetInputMode * * @ingroup input @@ -1876,6 +1932,8 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); * @param[in] key The desired [keyboard key](@ref keys). * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. * + * @note This function may only be called from the main thread. + * * @note `GLFW_KEY_UNKNOWN` is not a valid key for this function. * * @ingroup input @@ -1896,6 +1954,8 @@ GLFWAPI int glfwGetKey(GLFWwindow* window, int key); * @param[in] button The desired [mouse button](@ref buttons). * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); @@ -1921,6 +1981,8 @@ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); * @param[out] ypos Where to store the cursor y-coordinate, relative to the to * top edge of the client area, or `NULL`. * + * @note This function may only be called from the main thread. + * * @sa glfwSetCursorPos * * @ingroup input @@ -1945,6 +2007,8 @@ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); * @param[in] ypos The desired y-coordinate, relative to the top edge of the * client area. * + * @note This function may only be called from the main thread. + * * @sa glfwGetCursorPos * * @ingroup input @@ -1987,6 +2051,8 @@ GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); * @param[in] cursor The cursor to change to, or `NULL` to switch back to the * default system cursor. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); @@ -2021,6 +2087,8 @@ GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); @@ -2040,6 +2108,8 @@ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); @@ -2061,6 +2131,8 @@ GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun); @@ -2078,6 +2150,8 @@ GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmo * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun); @@ -2094,6 +2168,8 @@ GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursor * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun); @@ -2113,6 +2189,8 @@ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcu * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); @@ -2129,6 +2207,8 @@ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cb * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); @@ -2140,6 +2220,8 @@ GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); * @param[in] joy The joystick to query. * @return `GL_TRUE` if the joystick is present, or `GL_FALSE` otherwise. * + * @note This function may only be called from the main thread. + * * @ingroup input */ GLFWAPI int glfwJoystickPresent(int joy); @@ -2153,6 +2235,8 @@ GLFWAPI int glfwJoystickPresent(int joy); * set to zero if an error occurred. * @return An array of axis values, or `NULL` if the joystick is not present. * + * @note This function may only be called from the main thread. + * * @note The returned array is allocated and freed by GLFW. You should not * free it yourself. * @@ -2172,6 +2256,8 @@ GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count); * set to zero if an error occurred. * @return An array of button states, or `NULL` if the joystick is not present. * + * @note This function may only be called from the main thread. + * * @note The returned array is allocated and freed by GLFW. You should not * free it yourself. * @@ -2190,6 +2276,8 @@ GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count); * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick * is not present. * + * @note This function may only be called from the main thread. + * * @note The returned string is allocated and freed by GLFW. You should not * free it yourself. * @@ -2265,6 +2353,8 @@ GLFWAPI double glfwGetTime(void); * * @param[in] time The new value, in seconds. * + * @note This function may only be called from the main thread. + * * @note The resolution of the timer is system dependent, but is usually on the * order of a few micro- or nanoseconds. It uses the highest-resolution * monotonic time source on each supported platform. @@ -2315,12 +2405,12 @@ GLFWAPI GLFWwindow* glfwGetCurrentContext(void); * * @param[in] window The window whose buffers to swap. * - * @remarks This function may be called from any thread. - * * @par New in GLFW 3 * This function no longer calls @ref glfwPollEvents. You need to call it or * @ref glfwWaitEvents yourself. * + * @remarks This function may be called from any thread. + * * @sa glfwSwapInterval * * @ingroup context