Added on-demand loading of Vulkan and context creation API libraries
Added _GLFW_VULKAN_STATIC build macro to make the library use the Vulkan loader linked statically into the application (#820)
Bugfix: Single compilation unit builds failed due to naming conflicts (#783)
Bugfix: The range checks for glfwSetCursorPos used the wrong minimum (#773)
Bugfix: Defining GLFW_INCLUDE_VULKAN when compiling the library did not fail with the expected error message (#823)
Bugfix: Inherited value of CMAKE_MODULE_PATH was clobbered (#822)
[Win32] Bugfix: glfwSetClipboardString created an unnecessary intermediate copy of the string
[Win32] Bugfix: Examples failed to build on Visual C++ 2010 due to C99 in linmath.h (#785)
[Win32] Bugfix: The first shown window ignored the GLFW_MAXIMIZED hint when the process was provided a STARTUPINFO (#780)
[Cocoa] Bugfix: Event processing would segfault on some machines due to a previous distributed notification listener not being fully removed (#817,#826)
[Cocoa] Bugfix: Some include statements were duplicated (#838)
[X11] Bugfix: Window size limits were ignored if the minimum or maximum size was set to GLFW_DONT_CARE (#805)
[X11] Bugfix: Input focus was set before window was visible, causing BadMatch on some non-reparenting WMs (#789,#798)
[X11] Bugfix: glfwGetWindowPos and glfwSetWindowPos operated on the window frame instead of the client area (#800)
[WGL] Added reporting of errors from WGL_ARB_create_context extension
[GLX] Bugfix: Dynamically loaded entry points were not verified
[EGL] Added lib prefix matching between EGL and OpenGL ES library binaries
[EGL] Bugfix: Dynamically loaded entry points were not verified
Version 3.2
Released on
Added glfwVulkanSupported, glfwGetRequiredInstanceExtensions, glfwGetInstanceProcAddress, glfwGetPhysicalDevicePresentationSupport and glfwCreateWindowSurface for platform independent Vulkan support
Added glfwSetWindowMonitor for switching between windowed and full screen modes and updating the monitor and desired video mode of full screen windows
Added glfwMaximizeWindow and GLFW_MAXIMIZED for window maximization
Added glfwFocusWindow for giving windows input focus
Added glfwSetWindowSizeLimits and glfwSetWindowAspectRatio for setting absolute and relative window size limits
Added glfwGetKeyName for querying the layout-specific name of printable keys
Added glfwWaitEventsTimeout for waiting for events for a set amount of time
Added glfwSetWindowIcon for setting the icon of a window
Added glfwGetTimerValue and glfwGetTimerFrequency for raw timer access
Added glfwSetJoystickCallback and GLFWjoystickfun for joystick connection and disconnection events
Added GLFW_NO_API for creating window without contexts
Added GLFW_INCLUDE_VULKAN for including the Vulkan header
Added GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API and GLFW_EGL_CONTEXT_API for run-time context creation API selection
Added GLFW_CONTEXT_NO_ERROR context hint for GL_KHR_no_error support
Added GLFW_TRUE and GLFW_FALSE as client API independent boolean values
Added icons to examples on Windows and OS X
Relaxed rules for native access header macros
Removed dependency on external OpenGL or OpenGL ES headers
Merged all cursor test programs into the cursor program
Removed all mention of GLU in examples, build files and package dependencies
Bugfix: Initialization failed on headless systems
Bugfix: The cached current context could get out of sync
Bugfix: glfwIconifyWindow did not restore the original video mode for full screen windows created with GLFW_AUTO_ICONIFY
[Win32] Renamed hybrid GPU override compile-time option to _GLFW_USE_HYBRID_HPG and added support for AMD PowerXpress systems
[Win32] Bugfix: glfwGetVideoModes included unusable modes on some systems
[Win32] Bugfix: glfwWaitEvents would return directly for focused windows in disabled cursor mode
[Cocoa] Bugfix: The cached NSScreen for a monitor could get out of sync
[Cocoa] Bugfix: The GLFW_AUTO_ICONIFY window hint was ignored
[Cocoa] Bugfix: Resizing a window to its minimum size would segfault
[Cocoa] Bugfix: Creating or showing a window would make its context current
[Cocoa] Bugfix: Joysticks connected after glfwInit were not detected
[Cocoa] Bugfix: Cursor creation failed unless a window had been created.
[Cocoa] Bugfix: Window refresh events were not generated by iconification or restoration
[Cocoa] Bugfix: The primary monitor would get reported as disconnected when entering full screen on a dual-GPU machine with automatic graphics switching
[Cocoa] Bugfix: The original video modes were not restored when the application was hidden
[X11] Bugfix: glfwInit would segfault on systems without RandR
[X11] Bugfix: The response to _NET_WM_PING was sent to the wrong window
[X11] Bugfix: Character input via XIM did not work in many cases
[X11] Bugfix: No fallback existed for missing _NET_ACTIVE_WINDOW support
[X11] Bugfix: Some significant window focus events were ignored
[X11] Bugfix: The GLFW_AUTO_ICONIFY window hint was ignored
[X11] Bugfix: The original video mode was not restored on iconification of full screen windows
[X11] Bugfix: GLFW_ARROW_CURSOR selected the wrong cursor image
[X11] Bugfix: The GLFW_DECORATED hint was not ignored for full screen
[X11] Bugfix: glfwWaitEvents did not handle EINTR for select
[X11] Bugfix: glfwWaitEvents could return when no events were available
[X11] Bugfix: XkbGetKeyboard fails on XWayland
[X11] Bugfix: Character input did not work correctly for non-UTF-8 locales
[X11] Bugfix: Long input sequences generated by IMEs were discarded
[Cocoa] Bugfix: NSHighResolutionCapable was not enabled for test and example programs
[Cocoa] Bugfix: glfwSetWindowSize did not change the video mode for full screen windows
[X11] Added support for Cygwin-X
[X11] Made XInput2 optional at compile-time
[X11] Made Xxf86vm optional at compile-time
[X11] Bugfix: Moved _NET_REQUEST_FRAME_EXTENTS request to glfwGetWindowFrameSize and added protocol-breaking timeout as a workaround for broken support in Unity, Fluxbox and Xfwm
[X11] Bugfix: Mouse button GLFW_MOUSE_BUTTON_4 was never used
[X11] Bugfix: glfwTerminate could close an unrelated file descriptor
[X11] Bugfix: Some WMs (KWM, Fluxbox) did not respect cursor redefinition
[WGL] Bugfix: The context flags debug bit was not set for OpenGL ES
[GLX] Bugfix: The context flags debug bit was not set for OpenGL ES
[EGL] Bugfix: The context flags debug bit was not set for OpenGL ES
Version 3.1
Released on
Added GLFWcursor custom system cursor handle
Added glfwCreateCursor, glfwCreateStandardCursor, glfwDestroyCursor and glfwSetCursor for managing system cursor images
Added GLFWimage struct for passing 32-bit RGBA images
Added monitor and adapter identifier access to native API
Added glfwSetDropCallback and GLFWdropfun for receiving dropped files
Added glfwPostEmptyEvent for allowing secondary threads to cause glfwWaitEvents to return
Added empty test program for verifying posting of empty events
Added glfwSetCharModsCallback for receiving character events with modifiers
Added glfwGetWindowFrameSize for retrieving the size of the frame around the client area of a window
Added GLFW_AUTO_ICONIFY for controlling whether full screen windows automatically iconify (and restore the previous video mode) on focus loss
Added GLFW_DONT_CARE for indicating that any value is acceptable
Added GLFW_DOUBLEBUFFER for controlling whether to use double buffering
Added GLFW_CONTEXT_RELEASE_BEHAVIOR and values GLFW_ANY_RELEASE_BEHAVIOR, GLFW_RELEASE_BEHAVIOR_FLUSH and GLFW_RELEASE_BEHAVIOR_NONE for GL_KHR_context_flush_control support
Added GLFW_INCLUDE_ES31 for including the OpenGL ES 3.1 header
Added GLFW_FLOATING for creating always-on-top windowed mode windows
Added GLFW_FOCUSED window hint for controlling initial input focus
Added partial and experimental support for Wayland
Added partial and experimental support for Mir
Changed the window state attributes (focused, iconified and visible) to query the system directly
Changed the default of GLFW_REFRESH_RATE to GLFW_DONT_CARE to maintain the default behavior
Changed static library to build as position independent code for easier use from the Rust language
Changed glfwGetCursorPos to query the system directly for all cursor modes except captured mode
Bugfix: The debug context attribute was set from GL_ARB_debug_output even when a debug context had not been requested
Bugfix: The particles example was not linked against the threading library
Bugfix: The cursor was not positioned over newly created full screen windows
Bugfix: The queried cursor position was not always up-to-date
Bugfix: glfwExtensionSupported always failed for OpenGL ES 3.0 and later if the library was compiled for OpenGL ES
[Cocoa] Added _GLFW_USE_RETINA to control whether windows will use the full resolution on Retina displays
[Cocoa] Made content view subclass of NSOpenGLView
[Cocoa] Bugfix: Using a 1x1 cursor for hidden mode caused some screen recorders to fail
[Cocoa] Bugfix: Some Core Foundation objects were leaked during joystick enumeration and termination
[Cocoa] Bugfix: One copy of each display name string was leaked
[Cocoa] Bugfix: Monitor enumeration caused a segfault if no NSScreen was found for a given CGDisplay
[Cocoa] Bugfix: Modifier key events were lost if the corresponding modifier bit field was unchanged
[Cocoa] Bugfix: Joystick enumeration took hundreds of ms on some systems
[Cocoa] Bugfix: The cursor was hidden when the user resized a GLFW window
[Cocoa] Bugfix: The 10.10 Yosemite OpenGL 4.1 profile token was not used
[Cocoa] Bugfix: The generic software OpenGL renderer could be selected under certain conditions
[Cocoa] Bugfix: The virtual cursor jumped unpredictably when entering disabled cursor mode
[Win32] Enabled generation of pkg-config file for MinGW
[Win32] Removed option to require explicitly linking against winmm.dll
[Win32] Bugfix: Failure to load winmm or its functions was not reported to the error callback
[Win32] Bugfix: Some keys were reported based on the current layout instead of their physical location
[Win32] Bugfix: Maximized hidden windows were restored by glfwShowWindow
[Win32] Bugfix: Context re-creation was not triggered by sRGB hint
[Win32] Bugfix: Full screen windows were incorrectly sized and placed on some systems
[Win32] Bugfix: Gamma ramp functions acted on entire desktop instead of the specified monitor
[Win32] Bugfix: The wrong incorrect physical size was returned for non-primary monitors
[Win32] Bugfix: X-axis scroll offsets were inverted
[Win32] Bugfix: The Optimus HPG forcing variable was not correctly exported
[Win32] Bugfix: The iconified window state attribute was not always updated
[Win32] Bugfix: Previously focused windows with disabled cursor mode and that had been iconified by Win+D were not visible when restored
[Win32] Bugfix: The virtual cursor jumped unpredictably when entering disabled cursor mode
[X11] Added run-time support for systems lacking the XKB extension
[X11] Made GLX 1.3 the minimum supported version
[X11] Replaced XRRGetScreenResources with XRRGetScreenResourcesCurrent for monitor property retrieval
[X11] Bugfix: The case of finding no usable CRTCs was not detected
[X11] Bugfix: Detection of broken Nvidia RandR gamma support did not verify that at least one CRTC was present
[X11] Bugfix: A stale _NET_SUPPORTING_WM_CHECK root window property would cause an uncaught BadWindow error
[X11] Bugfix: No check was made for the presence of GLX 1.3 when GLX_SGIX_fbconfig was unavailable
[X11] Bugfix: The message type of ICCCM protocol events was not checked
[X11] Bugfix: glfwDestroyWindow did not flush the output buffer
[X11] Bugfix: Window frame interactions were reported as focus events
[X11] Bugfix: Workaround for legacy Compiz caused flickering during resize
[X11] Bugfix: The name pointer of joysticks were not cleared on disconnection
[X11] Bugfix: Video mode resolutions and monitor physical sizes were not corrected for rotated CRTCs
[X11] Bugfix: Unicode character input ignored dead keys
[X11] Bugfix: X-axis scroll offsets were inverted
[X11] Bugfix: Full screen override redirect windows were not always positioned over the specified monitor
[X11] Bugfix: Character input did not work for the default "C" locale
[X11] Bugfix: Joysticks connected after glfwInit were not detected (temporary inotify solution until proper libudev solution)
Version 3.0.4
Released on
Added the GLFW_BUILD_DOCS CMake option for controlling whether the documentation is built
Added the _GLFW_USE_CONFIG_H configuration macro for controlling whether to include the configuration header
Moved version number macro to internal.h for easier manual compilation
Renamed configuration header to glfw_config.h to avoid conflicts
Bugfix: The glfw3.pc file did not respect the LIB_SUFFIX CMake option
Bugfix: The joysticks test would segfault if a controller had no axes
[Win32] Allowed swap interval to be explicitly set to zero on DWM systems
[Win32] Bugfix: Removed joystick axis value negation left over from GLFW 2
[Win32] Bugfix: Restoring windows using the Win+D hot key did not trigger the focus callback
[Win32] Bugfix: The disabled cursor mode clip rectangle was updated for unfocused windows
[Win32] Bugfix: Cursor was not properly re-centered over odd-sized windows
[Win32] Bugfix: Negative window positions were reported incorrectly
[Win32] Bugfix: The iconify callback was not triggered when switching away from a full screen window using Alt+Tab
[Win32] Bugfix: Resizing a window with glfwSetWindowSize gave it focus
[Cocoa] Added dependency on CoreVideo framework for refresh rate retrieval
[Cocoa] Enabled Lion full screen for resizable windowed mode windows
[Cocoa] Moved to Cocoa API for application transformation and activation
[Cocoa] Bugfix: The GLFW_KEY_GRAVE_ACCENT key was reported as GLFW_KEY_WORLD_1 and vice versa
[Cocoa] Bugfix: The GLFW_KEY_F13 key was reported as GLFW_KEY_PRINT_SCREEN
[Cocoa] Bugfix: Implicit conversion from NSUInteger to int caused warnings with Xcode 5
[Cocoa] Bugfix: Use of undeclared selectors with @selector caused warnings with Xcode 5
[Cocoa] Bugfix: The cursor remained visible if moved onto client area after having been set to hidden outside it
[Cocoa] Bugfix: The refresh rate was zero for all modes of certain monitors
[Cocoa] Bugfix: The install_name field of the dynamic library was not set
[Cocoa] Bugfix: Full screen windows were never reported as having focus
[Cocoa] Bugfix: A superfluous I/O flag test prevented video modes from being listed for Thunderbolt monitor
[Cocoa] Bugfix: Retrieving the name of some external displays caused segfault
[Cocoa] Bugfix: The 10.9 SDK defines GLintptrARB and GLsizeiptrARB differently from the Khronos glext.h
[Cocoa] Bugfix: Creating hidden windows would steal application focus
[Cocoa] Bugfix: Controllers were reported as having zero buttons and axes
[Cocoa] Bugfix: Removed joystick axis value negation left over from GLFW 2
[X11] Added setting of the WM_CLASS property to the initial window title
[X11] Added support for _NET_WM_BYPASS_COMPOSITOR
[X11] Bugfix: Removed joystick axis value negation left over from GLFW 2
[X11] Bugfix: The position of hidden windows was ignored by Metacity and Compiz
[X11] Bugfix: The pthread.h header was not included by the GLX platform header.
Version 3.0.3
Released on
[Win32] Bugfix: _WIN32_WINNT was not set to Windows XP or later
[Win32] Bugfix: Legacy MinGW needs WINVER and UNICODE before stddef.h
[Cocoa] Bugfix: Cursor was not visible in normal mode in full screen
[Cocoa] Bugfix: Cursor was not actually hidden in hidden mode
[Cocoa] Bugfix: Cursor modes were not applied to inactive windows
[X11] Bugfix: Events for mouse buttons 4 and above were not reported
[X11] Bugfix: CMake 2.8.7 does not set X11_Xinput_LIB even when found
Version 3.0.2
Released on
Allowed character callback to be triggered regardless of modifier keys
Bugfix: The -Wall flag was not used with Clang and other GCC compatibles
Bugfix: The default for GLFW_ALPHA_BITS was set to zero
Bugfix: glfwInit would segfault if monitor enumeration failed and no error callback was set
[Win32] Added _GLFW_USE_DWM_SWAP_INTERVAL for forcing the swap interval to be set even when DWM compositing is enabled
[Win32] Added support for forcing the use of the high-performance GPU on nVidia Optimus systems
[Win32] Bugfix: The clipboard string was not freed on terminate
[Win32] Bugfix: Entry points for OpenGL 1.0 and 1.1 functions were not returned by glfwGetProcAddress
[Win32] Bugfix: The user32 and dwmapi module handles were not freed on library termination
[Cocoa] Added support for precise scrolling deltas on OS X 10.7 and later
[Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported by OS X 10.9
[Cocoa] Bugfix: The clipboard string was not freed on terminate
[Cocoa] Bugfix: Selectors were used that are not declared by the 10.6 SDK
[Cocoa] Bugfix: The position set by glfwSetWindowPos was incorrect
[X11] Bugfix: Override-redirect windows were resized to the desired instead of the actual resolution of the selected video mode
[X11] Bugfix: Screensaver override for full screen windows had a possible race condition
[X11] Bugfix: The reported window position did not account for the size of the window frame on some WMs
[X11] Bugfix: The original video mode of a monitor was overwritten by calls to glfwSetWindowSize
[X11] Bugfix: Key release events for GLFW_KEY_KP_5 were discarded.
Version 3.0.1
Released on
Bugfix: The wrong name was used for the CMake variable for the Xxf86vm library
[Cocoa] Bugfix: glfwGetFramebufferSize return the size in screen coordinates
[Cocoa] Bugfix: Messages not supported on Mac OS X 10.6 were used without tests for precence
[Cocoa] Bugfix: Process transformation was not performed if menu bar creation was disabled
[Win32] Bugfix: Context creation was attempted even if no valid pixel formats had been found
[X11] Bugfix: Duplicate window position and window and framebuffer size events were reported
Version 3.0
Released on
Added GLFWmonitor and updated monitor-related functions to take a monitor handle
Added glfwGetMonitors and glfwGetPrimaryMonitor for enumerating available monitors
Added glfwGetMonitorPos, glfwGetMonitorPhysicalSize and glfwGetMonitorName for retrieving monitor properties
Added glfwSetMonitorCallback and GLFWmonitorfun for notification of changes in the set of available monitors
Added GLFWwindow and updated window-related functions and callbacks to take a window handle
Added glfwSetWindowShouldClose and glfwWindowShouldClose for setting and retrieving the window close flag
Added glfwGetWindowPos for retrieving the position of a window
Added glfwDefaultWindowHints for resetting all window hints to their default values
Added glfwMakeContextCurrent for making the context of the specified window current
Added glfwSetErrorCallback, GLFWerrorfun and error type tokens for receiving error notifications
Added glfwSetWindowUserPointer and glfwGetWindowUserPointer for per-window user pointers
Added glfwGetVersionString for determining which code paths were enabled at compile time
Added glfwGetWindowMonitor for querying the monitor, if any, of the specified window
Added glfwGetFramebufferSize and glfwSetFramebufferSizeCallback for receiving the current size, in pixels, of the framebuffer
Added glfwSetWindowPosCallback and GLFWwindowposfun for receiving window position events
Added glfwSetWindowFocusCallback and GLFWwindowfocusfun for receiving window focus events
Added glfwSetWindowIconifyCallback and GLFWwindowiconifyfun for receiving window iconification events
Added glfwGetClipboardString and glfwSetClipboardString for interacting with the system clipboard
Added glfwGetJoystickName for retrieving the name of a joystick
Added glfwGetCurrentContext for retrieving the window whose OpenGL context is current
Added GLFW_SRGB_CAPABLE for requesting sRGB capable framebuffers
Added GLFW_CLIENT_API and its values GLFW_OPENGL_API and GLFW_OPENGL_ES_API for selecting client API
Added GLFW_CONTEXT_ROBUSTNESS and values GLFW_NO_ROBUSTNESS, GLFW_NO_RESET_NOTIFICATION and GLFW_LOSE_CONTEXT_ON_RESET for GL_ARB_robustness support
Added GLFW_OPENGL_REVISION to make up for removal of glfwGetGLVersion
Added GLFW_INCLUDE_GLCOREARB macro for including GL/glcorearb.h instead of GL/gl.h
Added GLFW_INCLUDE_ES1 macro for telling the GLFW header to use GLES/gl.h instead of GL/gl.h
Added GLFW_INCLUDE_ES2 macro for telling the GLFW header to use GLES2/gl2.h instead of GL/gl.h
Added GLFW_INCLUDE_NONE macro for telling the GLFW header to not include any client API header
Added GLFW_VISIBLE window hint and parameter for controlling and polling window visibility
Added GLFW_REPEAT key action for repeated keys
Added scancode parameter to key callback
Added refreshRate member to GLFWvidmode struct
Added key modifier parameter to key and mouse button callbacks
Added windows simple multi-window test program
Added sharing simple OpenGL object sharing test program
Added modes video mode enumeration and setting test program
Added threads simple multi-threaded rendering test program
Added glfw3native.h header and platform-specific functions for explicit access to native display, window and context handles
Added glfwSetGamma, glfwSetGammaRamp and glfwGetGammaRamp functions and GLFWgammaramp type for monitor gamma ramp control
Added window parameter to glfwSwapBuffers
Changed buffer bit depth parameters of glfwOpenWindow to window hints
Changed glfwCreateWindow and glfwSetWindowTitle to use UTF-8 encoded strings
Changed glfwGetProcAddress to return a (generic) function pointer
Changed glfwGetVideoModes to return a dynamic, unlimited number of video modes for the specified monitor
Changed cursor position to double-precision floating-point
Changed default cursor mode for fullscreen to normal
Renamed header directory GL to GLFW
Renamed glfw.h to glfw3.h to avoid conflicts with 2.x series
Renamed glfwOpenWindowHint to glfwWindowHint
Renamed glfwGetWindowParam to glfwGetWindowAttrib
Renamed GLFW_ACTIVE to GLFW_FOCUSED
Renamed GLFW_FSAA_SAMPLES to GLFW_SAMPLES
Renamed GLFW_WINDOW_NO_RESIZE to GLFW_RESIZABLE
Renamed GLFW_BUILD_DLL to _GLFW_BUILD_DLL
Renamed version test to glfwinfo
Renamed GLFW_NO_GLU to GLFW_INCLUDE_GLU and made it disabled by default
Renamed glfwGetJoystickPos to glfwGetJoystickAxes to match glfwGetJoystickButtons
Renamed mouse position functions to cursor position equivalents
Replaced glfwOpenWindow and glfwCloseWindow with glfwCreateWindow and glfwDestroyWindow
[Cocoa] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
[Cocoa] Bugfix: glfwInit changed the current directory without a bundle resource directory (backported from 3.0)
[Cocoa] Bugfix: glfwInit created a non-interactive menu bar (backported from 3.0)
[Carbon] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
[Win32] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
Version 2.7.3
Released on
Added GLFW_INCLUDE_GL3 macro for including the new gl3.h instead of gl.h
Bugfix: The returned desktop mode did not reflect the display mode as it was before the window was opened.
Bugfix: The reference manual did not note that glfwSetMousePosCallback and glfwSetMouseWheelCallback called the new callback before returning
[X11] Added the POSIX CLOCK_MONOTONIC time source as the preferred method (backported from 3.0)
[X11] Bugfix: Added missing Requires: line to pkg-config file generation
[X11] Bugfix: Threading link flags were discarded before pkg-config file generation
[X11] Bugfix: A synchronization point necessary for jitter-free locked cursor mode was incorrectly removed
[Cocoa] Added cocoa-dist-install install target, intended for packagers and language binding creators
[Cocoa] Bugfix: Permitted requests for OpenGL 3.0 and 3.1 despite the 3.2 context being forward-compatible
[Win32] Added Visual C++ 2010 project files for the GLFW tests and examples
[Win32] Replaced Cygwin cross-compile support with MSYS support due to clearer separation between Cygwin and MSYS
[Win32] Bugfix: Alt+F4 hot key was not translated into WM_CLOSE
Version 2.7.2
Released on
Added library version check to dynamic linking test
[Cocoa] Added support for OpenGL 3.2 core profile in 10.7 Lion and above
[Cocoa] Made relevant CFLAGS overridable
[Cocoa] Bugfix: The OpenGL framework pointer was not retrieved, making glfwGetProcAddress fail
[Cocoa] Bugfix: The Cocoa layer was not notified that the application may be multithreaded
Version 2.7.1
Released on
Clarified language in the Reference Manual concerning window hint resetting
Bugfix: The OpenGL profile and forward-compatibility window parameters were not set
Bugfix: The default OpenGL version in the version test was set to 1.1
Bugfix: The FSAA test did not check for the availability of GL_ARB_multisample
Bugfix: The window could be left in a closed state but still be flagged as open
Bugfix: glfwGetWindowSize did not check whether GLFW was initialized or whether the window was open
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The iconified and active window states were not tracked
[X11] Cleaned up depdendencies for libglfw.pc file
[X11] Bugfix: The dlopen fallback method for glfwGetProcAddress had been broken by unrelated edits
[X11] Bugfix: Calling glXCreateContextAttribsARB with an unavailable OpenGL version caused the application to terminate with a BadMatch Xlib error
[X11] Bugfix: GLFW_WINDOW_NO_RESIZE was honored in fullscreen mode
[Win32] Added Visual C++ 2010 project files for the GLFW DLL and static library to the support/msvc100 directory
[Win32] Enabled _GLFW_NO_DLOAD_GDI32 and _GLFW_NO_DLOAD_WINMM for the DLL build
[Win32] Bugfix: compile.bat used Unix-style line endings
[Win32] Bugfix: The WGLSWAPINTERVALEXT_T, WGLGETEXTENSIONSSTRINGARB_T and WGLGETEXTENSIONSSTRINGEXT_T typedefs were declared under WGL_ARB_pixel_format
[Win32] Bugfix: The array for WGL context attributes was too small and could overflow
[Win32] Bugfix: Context creation using profiles did not check for the availability of WGL_ARB_create_context_profile
[Win32] Bugfix: Context recreation logic was overly conservative, leading to unnecessary recreations
[Win32] Bugfix: Window focus was not handled correctly when using glfwInconifyWindow
Version 2.7
Released on
Added GLFW_OPENGL_VERSION_MAJOR and GLFW_OPENGL_VERSION_MINOR hints for versioned context creation
Added GLFW_OPENGL_FORWARD_COMPAT hint for forward compatible context creation
Added GLFW_OPENGL_DEBUG_CONTEXT hint for debug context creation
Added GLFW_OPENL_PROFILE hint for context creation using profiles
Added GLFW_NO_GLU macro for disabling the inclusion of the GLU header by the GLFW header
Added platform-independent pixel format selection (not used on Mac OS X)
Added support and symbols for several additional keys, including Windows/Command keys, Pause, Caps Lock and Menu
Added conservative value clamping to glfwOpenWindowHint
Added a number of test programs mostly useful to developers of GLFW
Added error messages and graceful failure to example programs
Added Cocoa port for Mac OS X 10.5 Leopard and later
Added vsync to all relevant example programs
Added a rudimentary OpenGL 3.2+ core profile example program
Updated Pascal (formerly Delphi) bindings to support more compilers
Clarified and expanded the User’s Guide and Reference Manual
Fixed a number of compiler warnings in the example programs
OpenGL version is now only parsed once, at window creation time
Changed glfwSwapBuffers to call glfwPollEventsafter buffer swap
Changed all comments in public header file to plain C style
Removed the keytest example program, as it was superseded by the events test
Removed deprecated AmigaOS and DOS ports
Removed all FPS counters from example programs
Removed all unmaintained language bindings
Removed support for Pelles C
Removed broken Microsoft Visual C++ 6.0 build path
[X11] Added x11-dist-install install target, intended for packagers of GLFW
[X11] Added x11-dist-clean build target, intended for developers of GLFW
[X11] Added support for GLX_SGIX_fbconfig
[X11] Added support for user-specified compilation flags via CFLAGS
[X11] Added documentation of configuration macros
[X11] Implemented support for GLFW_SYSTEM_KEYS
[X11] Improved configuration and makefile creation logic
[X11] Removed support for GLX version 1.2 and below
[X11] Removed unnecessary calls to XSync
[X11] Removed use of legacy window style atoms
[X11] Bugfix: Repeated keys would sometimes leak through despite key repeat being disabled
[X11] Bugfix: Fullscreen window resizing would cause color buffer clearing without taking framebuffer objects into account
[X11] Bugfix: AltGr was not reported as right Alt
[X11] Bugfix: Window colormap was not freed
[X11] Bugfix: Close callback was called for glfwCloseWindow
[X11] Bugfix: Misspelt struct member in XF86VidMode code path
[X11] Bugfix: Window decorations would not appear using certain versions of Compiz on Intel hardware
[X11] Bugfix: Numeric keypad key symbols would change depending on Num Lock state
[X11] Bugfix: Hidden cursor position snapped back when halfway from window center to edge
[X11] Bugfix: Not properly verifying that the window was mapped before making certain calls caused a BadMatch error
[X11] Bugfix: The response to _NET_WM_PING events was malformed
[X11] Bugfix: Hidden cursor mode interfered with other applications when GLFW window was unfocused
[X11] Bugfix: The invisible cursor objects used for hidden cursor mode were not freed
[X11] Bugfix: EWMH-compliant window managers were incorrectly detected
[X11] Bugfix: The EWMH code path for fullscreen windows did not present the window using _NET_ACTIVE_WINDOW
[X11] Bugfix: The EWMH code path for fullscreen windows did not send a _NET_WM_STATE client message
[Carbon] Added Universal Binary build targets for all examples
[Carbon] Renamed MacOSX port to Carbon
[Carbon] Removed support for 10.2 Jaguar
[Carbon] Deprecated Carbon port
[Carbon] Bugfix: Using the Dock or menu Quit command did not call the close callback
[Carbon] Bugfix: Key repeat events were not caught on 10.5 Leopard
[Carbon] Bugfix: Certain keys were not reported
[Carbon] Bugfix: Missing -m32 flag caused build failure on 10.6 Snow Leopard
[Carbon] Bugfix: Missing -mmacosx-version-min flag caused build failure on 10.5 Leopard
[Carbon] Bugfix: glfwOpenWindow did not call glClear
[Win32] Added Visual C++ project files for all examples and test programs
[Win32] Removed iterative context re-creation attempts for FSAA sample count
[Win32] Bugfix: The Visual C++ GLFW DLL project file did not use the correct DEF file
[Win32] Bugfix: WGL extensions were not detected and/or used correctly
[Win32] Bugfix: Improper use of wParam for WM_SYSCOMMAND
[Win32] Bugfix: Derivatives of stream.c were not cleaned up by compile.bat
[Win32] Bugfix: Pointer for GetExtensionsStringARB was not initialized
[Win32] Bugfix: Makefiles contained the wrong GLFW API version
[Win32] Bugfix: Numeric keypad key symbols would change depending on Num Lock state
[Win32] Bugfix: DllMain performed a number of forbidden actions (by calling glfwTerminate)
Version 2.6
Released on
Added GLFW_FSAA_SAMPLES multisampling hint
Added GLFW_WINDOW_NO_RESIZE hint for non-resizable windows
Added install targets for all Unix-like build targets
Added glfwReadMemoryImage function for creating a GLFWImage object from an image file in a memory buffer
Added glfwLoadMemoryTexture2D function for decoding an image file in a memory buffer into a texture
Added glfwLoadTextureImage2D function for loading a GLFWImage object into a texture
Added cross-compilation support for MinGW under a Unix-like host
D bindings updated and all examples ported to modern D
Delphi bindings updated to reflect API additions
Bugfix: The interaction between key repeat and window focus code caused duplicate presses
Bugfix: The mouse position was not properly updated when re-enabling the mouse cursor
[Win32] Added pkg-config file generation for Cygwin
[Win32] Added version number to window class name
[Win32] Added optional loading of user provided window icon resource
[Win32] Bugfix: Very small sleep periods were forced to higher value
[Win32] Bugfix: The nmake makefile did not handle paths with spaces correctly
[X11] Bugfix: Window re-opening now works properly (including fullscreen windows)
[X11] Bugfix: Potential crash bug in video mode matching code
[X11] Bugfix: Static buffers imposed an invisible limit on reported video mode count
[X11] Bugfix: Interaction with certain window managers when setting input focus would cause termination with a BadMatch error
[X11] Bugfix: Keypad keys did not trigger the character callback
[MacOSX] Added pkg-config file generation
[MacOSX] Added building of shared library
[MacOSX] Added building of Universal Binary libraries
[MacOSX] Replaced fullscreen code path with CGL version
[MacOSX] Bugfix: Binaries without bundles or resource forks now interact properly with the WM
[MacOSX] Bugfix: Replaced Carbon event time source with gettimeofday
[MacOSX] Bugfix: Added code to minimize the dreaded OpenGL application startup jump
[MacOSX] Bugfix: Fixed broken implementation of glfwSetMousePos for windowed mode
[MacOSX] Bugfix: Fixed broken implementation of hidden cursor
[MacOSX] Bugfix: Capturing all displays and not just the main one
[AmigaOS] Obsoleted platform due to lack of maintainer and community interest
[DOS] Obsoleted platform due to lack of maintainer and community interest
Version 2.5
Released on
Added the function glfwWaitEvents
Added window close callback, which enables a program to prevent a user from closing a window with the window manager
Added window refresh callback, which is called when the window needs to be refreshed
Added support for loading alpha textures (GLFW_ALPHA_MAP_BIT)
Added support for the Lua programming language
Added support for the D programming language
Added support for the Pelles C compiler for Windows
Added API level support for up to eight mouse buttons
[Win32] Added support for up to five mouse buttons
[Win32] Mouse down events capture mouse input
[Win32] Bugfix: The DLL now exports glfwSetTime
[Win32] Fix: The GLFW window is now placed in the upper left corner of the desktop working area
[Win32/X11] Bugfix: More robust check for SwapInterval
[X11] Added support for USB joysticks under Linux (/dev/input/js*)
[X11] Bugfix: Added support for GLX extensions in glfwExtensionSupported
[X11] Bugfix: More robust fullscreen mode (?)
[X11] Bugfix: Runtime check of XF86VidMode support for the active display
[X11] Bugfix: Some mouse button events were reported incorrectly
[MacOSX] Added support for the input char callback.
[MacOSX] Added video mode validation and duplicate elimination.
[MacOSX] Switched to a new MakeBundle.sh script
[MacOSX] Added emulation of the window refresh callback.
[MacOSX] Bugfix: The window and its associated resources are now properly released.
[MacOSX] Bugfix: Removed support for more than eight mouse buttons.
[x86 CPUs] Improved Intel mobile CPU detection (e.g. disables RDTSC timing on Centrino systems)
Version 2.4.2
Released on
Preliminary native Mac OS X support (via the Carbon interface)
Preliminary DOS support (DJGPP + Mesa)
Changed license to the zlib license (almost identical to the previous GLFW license), so now GLFW is OSI Certified
Rewrote the GLFW documentation in LaTeX, meaning several improvements (both visual and practical)
Added the support folder to the distribution, which includes support for various languages
[Win32] Added OpenWatcom compiler support (thanks Sebastian Schuberth!)
[Win32] Changed fallback timer from GetTickCount to timeGetTime, which usually provides better resolution
[Win32] Bugfix: Accumulator buffer selection should be more robust
[Win32] Bugfix: If stereo rendering is requested, and no stereo pixel format could be created, glfwOpenWindow now fails
[Win32] Bugfix: glfwSetWindowSize now sets the size of the client area, NOT the entire window, meaning that there is a 1:1 relationship between glfwSetWindowSize and glfwGetWindowSize
[X11] Added FreeBSD and QNX support
[X11] Added support for non-pthread capable systems
[X11] Hopefully more robust configuration script (compile.sh)
[X11] Bugfix: When mouse cursor is hidden, mouse sensitivity is no longer degraded
[X11] Bugfix: Source files EOL was PC style (CR/LF) in Version 2.4.1 (blame my WinCVS configuration)
[X11] Bugfix: When a GLFW window is closed, input focus is properly released
[X11] Bugfix: Iconification of fullscreen windows should now work properly
[x86 CPUs] Improved RDTSC timing (e.g. RDTSC support on single-CPU Intel Hyper-Threading enabled systems)
[AmigaOS] Added joystick support
[AmigaOS] Mouse cursor positioning is now implemented
[AmigaOS] Added support for Geek Gadgets GCC
[AmigaOS] Bugfix: glfwGetWindowParam now returns proper values for all parameters (except for GLFW_ACCELERATED)
Version 2.4.1
Released on
Added AmigaOS support (preliminary)
GLFW for the X Window System now works under Mac OS X
[Win32] Bugfix: glfwWaitCond treated the timeout as milliseconds instead of seconds
[X11] Bugfix: GLFW should now compile under IRIX v5.3
[X11] Bugfix: GLFW should now compile with Kylix
Version 2.4
Released on
Major source code rearrangement - much code is now shared between different platforms, and it should be easier to port GLFW to new platforms
Added a Unicode keyboard text input interface (CharCallback)
Keyboard key input is now slightly more internationalized: GLFW now uses 8-bit ISO-8859-1 encoding for keys representing printable characters (e.g. "Ö", "§", etc), as opposed to the previous 7-bit US-ASCII encoding
Added more key constants (F13-F25, keypad ‘=’)
Added an enable/disable switch for automatic event polling from glfwSwapBuffers
[X11] Added support for sysctl for querying the number of processors in the system (if POSIX sysconf is not supported)
[X11] Bugfix: compile.sh now works with Sun sh (and hopefully others too)
[X11] Bugfix: compile.sh now detects the need for -ldl when dlopen is used
[Win32] Bugfix: When closing a fullscreen window under Win 9x/NT4, the task bar icon now disappears properly
[Win32] Bugfix: GLFW should now compile on a wider range of MSVC compilers (e.g. .NET) - Thanks Tim Little!
Version 2.3.2
Released on
Removed the silly limitation of 100 threads (the thread information is now kept in a linked list)
General source cleanup (window state is now kept in a single struct, plus some other minor changes)
[X11] Added Solaris gethrtime support (not tested yet), which should give an improved timer for Sun/Solaris stations
[X11] Some fixes to the compile.sh script (-O for non-gcc compilers and make x11-gcc should now really force GCC)
Version 2.3.1
Released on
[X11] A minimalist configuration script was added that solves the issue with glXGetProcAddressARB, and unifies all Unix/X11 Makefiles into one template Makefile (well, one for GLFW, and one for the examples)
Version 2.3
Released on
Added OpenGL stereo rendering support
Added a function for parsing the OpenGL version string (glfwGetGLVersion)
[x86] Bugfix: Hopefully the CPU core clock dependent timer RDTSC will never be used on CPUs with variable core frequencies anymore
[X11] Bugfix: GLFW could create stereo rendering capable windows, even if it was not requested (GLFW 2.2.x did not support selection of stereo rendering)
[X11] Bugfix: glfwGetProcAddress returned NULL on most systems (even on those that supported glXGetProcAddressARB). Now GLFW assumes that glXGetProcAddressARB is supported on all systems, which solves the bug, but may result in compiler errors on some systems (please let me know if you have any related problems).
Version 2.2.3
Released on
Bugfix: Checking for GL_SGIS_generate_mipmap is more robust
Bugfix: glfwLoadTexture2D will now fail if no window is opened
[Win32] Bugfix: Right shift was not detected under Win 9x/ME (it is still not as good as under NT/2K/XP, but at least you get right shifts)
[X11] Bugfix: Visuals are now selected more accurately. For instance, glfwOpenWindow will no longer fail if you request a 24-bit color buffer if only 16-bit color visuals are available (which means that pong3d should work on 16-bit displays).
Version 2.2.2
Released on
[Win32] Bugfix: Windows did not always get focus (this was a tough one!)
[Win32] Bugfix: glfwGetWindowParam did not work with GLFW_ACCUM_\*_BITS or GLFW_AUX_BUFFERS
[X11] Bugfix: Linux joystick Y axis positions were reversed
Version 2.2.1
Released on
[X11] Added joystick support for Linux
Version 2.2
Released on
Added joystick support (only supported under Windows so far)
Added joystick controls to pong3d.c (only 3 more lines of code)
Added glfwOpenWindowHint function
It is now possible to specify a desired vertical monitor refresh rate (for fullscreen windows)
It is now possible to request an accumulator buffer and auxiliary buffers
Added glfwSetTime function
Added a GLFW conversion of the MESA/GLUT gears.c demo to the example programs
[Win32] gdi32.dll and winmm.dll are now loaded dynamically when glfwInit is called. This means that there is no need to link with gdi32.lib or winmm.lib when using the static version of GLFW, which should make GLFW usage more convenient.
[Win32] Bugfix: glfwExtensionSupported now detects all WGL extensions (e.g. WGL_ARB_pbuffer)
[Win32] Bugfix: Mouse cursor was not re-hidden when a GLFW window was deselected and then selected again (with ALT+TAB)
[X11] Bugfix: Minor bug in the SGI timer - and ugly (unintended) SGI timer debug info removed
[X11] Bugfix: glfwGetDesktopMode and glfwGetVideoModes no longer give segmentation faults if no X server is available
Version 2.1
Released on
Added image and texture loading capabilities (support for the TGA file format at the moment)
Added a new example program (mipmaps.c) for showing off the automatic mipmap generation and texture loading capabilities of GLFW 2.1
Removed the separate TGA loader (tga.c in the examples directory) since texture loading is supported natively by GLFW. Also updated the Pong3D demo to use GLFW texture loading instead of tga.c.
Improved keyboard handling (e.g. numeric keypad keys can be detected)
Added a new example program, keytest.c
Changed the GLFWvidmode structure and the corresponding API functions to report pure color bits instead of the confusing (and unportable) “BPP” field
Changed glfwSetWindowSize so that it operates in fullscreen mode too
Added mouse wheel support under Windows (not Win95) and X11
Added window iconification functions (glfwInconifyWindow and glfwRestoreWindow)
Improved iconification and deactivation handling under both Windows and X11
Made it possible to turn on/off key repeat (the default is now no key repeat)
Added SGI hardware timer support (CLOCK_SGI_CYCLE) for improved timer resolution for SGI computers
Added support for the free Borland C++ Builder 5.x compiler for Windows
Made it possible to compiler GLFW as a Windows DLL using any of the supported compilers
Some constants have changed names (e.g. GLFW_REDBITS is now called GLFW_RED_BITS)
Updated GLFW documentation (GLFW Users Guide and GLFW Reference Manual) to reflect the changes in the API
[X11] Bugfix: Iconification/deactivation is now detected
[X11] Bugfix: Non-OpenGL visuals are not listed anymore
[XFree86] Bugfix: Undesired video mode changes are now prevented
Version 2.0.3
Released on
Added precise CPU cycle based timing support (RDTSC) for x86 CPUs (under both Windows and Unix)
Added a makefile option for building for Windows with Cygwin
Corrected the CC for Unix/X11 makefiles (-Wall is usually not a supported flag for CC, so it was removed from the CFLAGS list)
Version 2.0.2
Released on
Added a makefile option for building for X11 with ‘cc’ rather than ‘gcc’ (useful for IRIX users for instance)
[Win32] Bugfix: Mouse coordinates are now relative to the window upper left corner, which also means that disabling the mouse cursor in windowed mode should work much better
[X11] Bugfix: Added a bunch of more keys that are recognized by GLFW
[X11] Bugfix: glfwGetNumberOfProcessors now works for IRIX (earlier versions of GLFW would not compile under IRIX)
Version 2.0.1
Released on
glfwTerminate will now be called automatically upon normal program termination (using atexit)
[Win32] Bugfix: Buffer-swapping did not work if a window lost focus
[Win32] Bugfix: Top level Makefile did not work under Windows 9x
[Win32] Bugfix: NULL declaration in glfw.h was not MSVC 7.x compatible
[X11] Bugfix: GLFW would not build with C++ (e.g. g++)
Version 2.0
Released on
GLFW is no longer a single source file, but an entire link library
Added multi threading support
Added more window control
New distribution layout (both Win32 and X11 version in same archive)
Added GLFW Users Manual and GLFW Reference Manual as PDF files