GLFW Changelog

New in version 3.1

January 19th, 2015
  • 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)

New in version 3.0.4 (January 10th, 2014)

  • 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.

New in version 3.0 (June 17th, 2013)

  • This version removes deprecated features and adds a new API supporting multiple windows and monitors, sRGB, robustness, OpenGL ES, high-DPI, gamma ramps, callbacks for more events, clipboard text I/O, an error description callback, layout-independent keyboard input, UTF-8 for all strings, and more.

New in version 2.7.9 (June 7th, 2013)

  • This version adds fixes for multiple cursor motion bugs on Windows and fixes support for the LFLAGS environment variable on OS X.

New in version 2.7.8 (April 6th, 2013)

  • This version fixed a few minor bugs on each platform, most notably the flashing window on Windows and a workaround for a bug in Mesa 9.x.

New in version 2.7.7 (November 10th, 2012)

  • This release adds fixes for a few minor bugs on each platform, support for more swap interval methods on X11 and Visual C++ 2012 project files.
  • [Cocoa] Bugfix: The cursor positioning code used NSPoint in place of CGPoint
  • [Cocoa] Bugfix: The detection of setRestorable: used the wrong selector signature
  • [Cocoa] Bugfix: The test for whether glfwTerminate had been called from the main thread was missing
  • [Win32] Added Visual C++ 2012 project files for the static library, DLL and all test and example programs
  • [Win32] Bugfix: The GLFW_OPENGL_DEBUG_CONTEXT hint did not trigger context re-creation when WGL_ARB_create_context was available
  • [Win32] Bugfix: The GLFW_OPENGL_DEBUG_CONTEXT window parameter was not set after debug context creation
  • [X11] Added support for the GLX_EXT_swap_control and GLX_MESA_swap_control extensions as alternatives to GLX_SGI_swap_control
  • [X11] Bugfix: The GLFW_OPENGL_DEBUG_CONTEXT window parameter was not set after debug context creation
  • [X11] Bugfix: The window size hints were not updated when calling glfwSetWindowSize on a non-resizable window
  • [X11] Bugfix: The detected link flags for clock_gettime were not added to the pkg-config file

New in version 2.7.6 (July 4th, 2012)

  • This version adds support for joysticks on Mac OS X, a graphical joystick test, support for 64-bit builds using MinGW-w64, and fixes for a number of (primarily input) bugs.

New in version 2.7.5 (April 17th, 2012)

  • This version fixes a compilation error for certain versions of Mac OS X and adds support for monotonic time input on Cocoa.

New in version 2.7.4 (March 22nd, 2012)

  • This version adds bugfixes for a few minor issues in 2.7.3, most notably the missing -lrt on X11 and removal of the non-interactive menu bar created by glfwInit on Mac OS X.