What's new in GLFW 3.4
Feb 23, 2024
- Added GLFW_PLATFORM init hint for runtime platform selection (#1958)
- Added GLFW_ANY_PLATFORM, GLFW_PLATFORM_WIN32, GLFW_PLATFORM_COCOA, GLFW_PLATFORM_WAYLAND, GLFW_PLATFORM_X11 and GLFW_PLATFORM_NULL symbols to specify the desired platform (#1958)
- Added glfwGetPlatform function to query what platform was selected (#1655,#1958)
- Added glfwPlatformSupported function to query if a platform is supported (#1655,#1958)
- Added glfwInitAllocator for setting a custom memory allocator (#544,#1628,#1947)
- Added GLFWallocator struct and GLFWallocatefun, GLFWreallocatefun and GLFWdeallocatefun types (#544,#1628,#1947)
- Added glfwGetWindowTitle function for querying window title (#1448,#1909,#2482)
- Added glfwInitVulkanLoader for using a non-default Vulkan loader (#1374,#1890)
- Added GLFW_RESIZE_NWSE_CURSOR, GLFW_RESIZE_NESW_CURSOR, GLFW_RESIZE_ALL_CURSOR and GLFW_NOT_ALLOWED_CURSOR cursor shapes (#427)
- Added GLFW_RESIZE_EW_CURSOR alias for GLFW_HRESIZE_CURSOR (#427)
- Added GLFW_RESIZE_NS_CURSOR alias for GLFW_VRESIZE_CURSOR (#427)
- Added GLFW_POINTING_HAND_CURSOR alias for GLFW_HAND_CURSOR (#427)
- Added GLFW_MOUSE_PASSTHROUGH window hint for letting mouse input pass through the window (#1236,#1568)
- Added GLFW_CURSOR_CAPTURED cursor mode to confine the cursor to the window content area (#58)
- Added GLFW_POSITION_X and GLFW_POSITION_Y window hints for initial position (#1603,#1747)
- Added GLFW_SCALE_FRAMEBUFFER window hint for Wayland and macOS scaling (#2457)
- Added GLFW_ANY_POSITION hint value for letting the window manager choose (#1603,#1747)
- Added GLFW_PLATFORM_UNAVAILABLE error for platform detection failures (#1958)
- Added GLFW_FEATURE_UNAVAILABLE error for platform limitations (#1692)
- Added GLFW_FEATURE_UNIMPLEMENTED error for incomplete backends (#1692)
- Added GLFW_WAYLAND_APP_ID window hint string for Wayland app_id selection (#2121,#2122)
- Added GLFW_ANGLE_PLATFORM_TYPE init hint and GLFW_ANGLE_PLATFORM_TYPE_* values to select ANGLE backend (#1380)
- Added GLFW_X11_XCB_VULKAN_SURFACE init hint for selecting X11 Vulkan surface extension (#1793)
- Added GLFW_WIN32_KEYBOARD_MENU window hint for enabling access to the window menu
- Added GLFW_WIN32_SHOWDEFAULT window hint for applying the parent process show command (#2359)
- Added GLFW_NATIVE_INCLUDE_NONE for disabling inclusion of native headers (#1348)
- Added GLFW_BUILD_WIN32 CMake option for enabling Win32 support (#1958)
- Added GLFW_BUILD_COCOA CMake option for enabling Cocoa support (#1958)
- Added GLFW_BUILD_X11 CMake option for enabling X11 support (#1958)
- Added GLFW_LIBRARY_TYPE CMake variable for overriding the library type (#279,#1307,#1497,#1574,#1928)
- Added support for XDG_SESSION_TYPE environment variable
- Added GLFW_PKG_CONFIG_REQUIRES_PRIVATE and GLFW_PKG_CONFIG_LIBS_PRIVATE CMake variables exposing pkg-config dependencies (#1307)
- Made joystick subsystem initialize at first use (#1284,#1646)
- Made GLFW_DOUBLEBUFFER a read-only window attribute
- Made Wayland the preferred platform over X11 if both are available (#2035)
- Updated the minimum required CMake version to 3.4
- Updated gamepad mappings from upstream
- Renamed GLFW_USE_WAYLAND CMake option to GLFW_BUILD_WAYLAND (#1958)
- Disabled tests and examples by default when built as a CMake subdirectory
- Removed GLFW_USE_OSMESA CMake option enabling the Null platform (#1958)
- Removed CMake generated configuration header
- Bugfix: glfwGetVideoMode returned an invalid mode on error (#1292)
- [Win32] Added a version info resource to the GLFW DLL
- [Win32] Made hidden helper window use its own window class
- [Win32] Bugfix: The foreground lock timeout was overridden, ignoring the user
- [Cocoa] Added glfwGetCocoaView native access function (#2235)
- [Cocoa] Moved main menu creation to GLFW initialization time (#1649)
- [Cocoa] Bugfix: Touching event queue from secondary thread before main thread would abort (#1649)
- [Wayland] Added support for glfwRequestWindowAttention (#2287)
- [Wayland] Added support for glfwFocusWindow
- [Wayland] Added support for GLFW_RESIZABLE (#2203)
- [Wayland] Added support for fractional scaling of window contents
- [Wayland] Added dynamic loading of all Wayland libraries
- [Wayland] Bugfix: CLOCK_MONOTONIC was not correctly enabled
- [Wayland] Bugfix: GLFW_HOVERED was true when the cursor was over any fallback window decoration
- [Wayland] Bugfix: Fallback decorations allowed resizing to invalid size (#2204)
- [X11] Bugfix: Termination would segfault if the IM had been destroyed
- [X11] Bugfix: Any IM started after initialization would not be detected
- [Linux] Bugfix: Joystick evdev fds remained open in forks (#2446)
- [POSIX] Removed use of deprecated function gettimeofday
- [POSIX] Bugfix: CLOCK_MONOTONIC was not correctly tested for or enabled
- [WGL] Disabled the DWM swap interval hack for Windows 8 and later (#1072)
- [NSGL] Removed enforcement of forward-compatible flag for core contexts
- [NSGL] Bugfix: A core profile OpenGL context was returned if 3.2+ compatibility profile was requested
- [EGL] Added platform selection via the EGL_EXT_platform_base extension (#442)
- [EGL] Added ANGLE backend selection via EGL_ANGLE_platform_angle extension (#1380)
New in GLFW 3.3.10 (Feb 22, 2024)
- Bugfix: glfwGetKeyName emitted GLFW_INVALID_VALUE for scancodes with no key token (#1785,#2214)
- [Wayland] Bugfix: Terminating the library before showing a window could segfault
- [Wayland] Bugfix: Compilation failed on FreeBSD (#2445)
- [Linux] Bugfix: `regfree´ was called on invalid data (#2464)
- [WGL] Bugfix: Context creation failed in Parallels VM (#2191,#2406,#2467)
New in GLFW 3.3.9 (Dec 14, 2023)
- Bugfix: glfwGetKeyScancode returned 0 on error when initialized instead of -1
- Bugfix: Failure to make a newly created context current could cause segfault (#2327)
- [Win32] Fix pkg-config for dynamic library on Windows (#2386, #2420)
- [Win32] Bugfix: glfwWaitEventsTimeout did not return for some sent messages (#2408)
- [Win32] Bugfix: XInput could reportedly provide invalid DPad bit masks (#2291)
- [Cocoa] Bugfix: Compilation failed on OS X 10.8 due to unconditional use of 10.9+ symbols (#2161)
- [Cocoa] Bugfix: Full screen windows were resizable by the user (#2377,#2405)
- [Cocoa] Bugfix: Full screen windows were miniaturized when clicked on macOS 10.15 (#2377,#2405)
- [Cocoa] Bugfix: Querying joystick elements could reportedly segfault on macOS 13 Ventura (#2320)
- [Cocoa] Bugfix: Print Screen key was not correctly reported (#1786,#2169)
- [Wayland] Added improved fallback window decorations via libdecor (#1639,#1693)
- [Wayland] Bugfix: Connecting a mouse after glfwInit would segfault (#1450)
- [Wayland] Disabled alpha channel for opaque windows on systems lacking EGL_EXT_present_opaque (#1895)
- [Wayland] Bugfix: Buffer would overrun when storing received drag offer (#2225)
- [Wayland] Bugfix: Joysticks connected after glfwInit were not detected (#2198)
- [Wayland] Bugfix: Fallback decorations emitted GLFW_CURSOR_UNAVAILABLE errors
- [Wayland] Bugfix: Some events could fail to end wait for new events (#2397)
- [Linux] Bugfix: Joysticks without buttons were ignored (#2042,#2043)
- [Linux] Bugfix: A small amount of memory could leak if initialization failed (#2229)
- [EGL] Added loading of glvnd libOpenGL.so.0 where available for OpenGL
- [EGL] Bugfix: EGL_EXT_present_opaque caused issues on X11 with Nvidia blob (#2365)
- [EGL] Bugfix: Setting GLFW_CONTEXT_DEBUG caused creation to fail (#2348)
- [GLX] Added loading of glvnd libGLX.so.0 where available
New in GLFW 3.3.8 (Jul 22, 2022)
- Added GLFW_NATIVE_INCLUDE_NONE for disabling inclusion of native headers (#1348)
- Bugfix: glfwMakeContextCurrent would access TLS slot before initialization
- Bugfix: glfwSetGammaRamp could emit GLFW_INVALID_VALUE before initialization
- Bugfix: glfwGetJoystickUserPointer returned NULL during disconnection (#2092)
- [Win32] Bugfix: Alt+PrtSc would emit GLFW_KEY_UNKNOWN and a different scancode than PrtSc (#1993)
- [Win32] Bugfix: GLFW_KEY_PAUSE scancode from glfwGetKeyScancode did not match event scancode (#1993)
- [Win32] Bugfix: Instance-local operations used executable instance (#469,#1296,#1395)
- [Win32] Bugfix: The OSMesa library was not unloaded on termination
- [Win32] Bugfix: Right shift emitted GLFW_KEY_UNKNOWN when using a CJK IME (#2050)
- [Cocoa] Disabled macOS fullscreen when GLFW_RESIZABLE is false
- [Cocoa] Bugfix: A connected Apple AirPlay would emit a useless error (#1791)
- [Cocoa] Bugfix: The EGL and OSMesa libraries were not unloaded on termination
- [Cocoa] Bugfix: GLFW_MAXIMIZED was always true when GLFW_RESIZABLE was false
- [Cocoa] Bugfix: Changing GLFW_DECORATED in macOS fullscreen would abort application (#1886)
- [Cocoa] Bugfix: Setting a monitor from macOS fullscreen would abort application (#2110)
- [Cocoa] Bugfix: The Vulkan loader was not loaded from the Frameworks bundle subdirectory (#2113,#2120)
- [X11] Bugfix: The OSMesa libray was not unloaded on termination
- [X11] Bugfix: A malformed response during selection transfer could cause a segfault
- [X11] Bugfix: Some calls would reset Xlib to the default error handler (#2108)
- [Wayland] Added support for file path drop events (#2040)
- [Wayland] Added support for more human-readable monitor names where available
- [Wayland] Removed support for the deprecated wl_shell protocol
- [Wayland] Bugfix: glfwSetClipboardString would fail if set to result of glfwGetClipboardString
- [Wayland] Bugfix: Data source creation error would cause double free at termination
- [Wayland] Bugfix: Partial writes of clipboard string would cause beginning to repeat
- [Wayland] Bugfix: Some errors would cause clipboard string transfer to hang
- [Wayland] Bugfix: Drag and drop data was misinterpreted as clipboard string
- [Wayland] Bugfix: MIME type matching was not performed for clipboard string
- [Wayland] Bugfix: The OSMesa library was not unloaded on termination
- [Wayland] Bugfix: glfwCreateWindow could emit GLFW_PLATFORM_ERROR
- [Wayland] Bugfix: Lock key modifier bits were only set when lock keys were pressed
- [Wayland] Bugfix: A window leaving full screen mode would be iconified (#1995)
- [Wayland] Bugfix: A window leaving full screen mode ignored its desired size
- [Wayland] Bugfix: glfwSetWindowMonitor did not update windowed mode size
- [Wayland] Bugfix: glfwRestoreWindow would make a full screen window windowed
- [Wayland] Bugfix: A window maximized or restored by the user would enter an inconsistent state
- [Wayland] Bugfix: Window maximization events were not emitted
- [Wayland] Bugfix: glfwRestoreWindow assumed it was always in windowed mode
- [Wayland] Bugfix: glfwSetWindowSize would resize a full screen window
- [Wayland] Bugfix: A window content scale event would be emitted every time the window resized
- [Wayland] Bugfix: If glfwInit failed it would close stdin
- [Wayland] Bugfix: Manual resizing with fallback decorations behaved erratically (#1991,#2115,#2127)
- [Wayland] Bugfix: Size limits included frame size for fallback decorations
- [Wayland] Bugfix: Updating GLFW_DECORATED had no effect on server-side decorations
- [Wayland] Bugfix: A monitor would be reported as connected again if its scale changed
- [Wayland] Bugfix: glfwTerminate would segfault if any monitor had changed scale
- [Wayland] Bugfix: Window content scale events were not emitted when monitor scale changed
- [Wayland] Bugfix: glfwSetWindowAspectRatio reported an error instead of applying the specified ratio
- [Wayland] Bugfix: GLFW_MAXIMIZED window hint had no effect
- [Wayland] Bugfix: glfwRestoreWindow had no effect before first show
- [Wayland] Bugfix: Hiding and then showing a window caused program abort on wlroots compositors (#1268)
- [Wayland] Bugfix: GLFW_DECORATED was ignored when showing a window with XDG decorations
New in GLFW 3.3.7 (Apr 5, 2022)
- [Win32] Bugfix: A window created maximized and undecorated would cover the whole monitor (#1806)
- [Win32] Bugfix: The default restored window position was lost when creating a maximized window
- [Win32] Bugfix: glfwMaximizeWindow would make a hidden window visible
- [Cocoa] Bugfix: kUTTypeURL was deprecated in macOS 12.0 (#2003)
- [X11] Bugfix: Dynamic loading on OpenBSD failed due to soname differences
- [X11] Bugfix: Waiting for events would fail if file descriptor was too large (#2024)
- [X11] Bugfix: Joystick events could lead to busy-waiting (#1872)
- [X11] Bugfix: glfwWaitEvents* did not continue for joystick events
- [X11] Bugfix: glfwPostEmptyEvent could be ignored due to race condition (#379,#1281,#1285,#2033)
- [X11] Bugfix: Dynamic loading on NetBSD failed due to soname differences
- [X11] Bugfix: Left shift of int constant relied on undefined behavior (#1951)
- [Wayland] Added support for key names via xkbcommon
- [Wayland] Bugfix: Key repeat could lead to a race condition (#1710)
- [Wayland] Bugfix: Activating a window would emit two input focus events
- [Wayland] Bugfix: Disable key repeat mechanism when window loses input focus
- [Wayland] Bugfix: Window hiding and showing did not work (#1492,#1731)
- [Wayland] Bugfix: A key being repeated was not released when window lost focus
- [Wayland] Bugfix: Showing a hidden window did not emit a window refresh event
- [Wayland] Bugfix: Full screen window creation did not ignore GLFW_VISIBLE
- [Wayland] Bugfix: Some keys were reported as wrong key or GLFW_KEY_UNKNOWN
- [Wayland] Bugfix: Text input did not repeat along with key repeat
- [Wayland] Bugfix: glfwPostEmptyEvent sometimes had no effect (#1520,#1521)
- [GLX] Bugfix: Context creation failed if GLX 1.4 was not exported by GLX library
New in GLFW 3.3.6 (Dec 10, 2021)
- Bugfix: Joysticks connected before init did not get gamepad mappings (#1996)
- [Win32] Bugfix: Content scale queries could fail silently (#1615)
- [Win32] Bugfix: Content scales could have garbage values if monitor was recently disconnected (#1615)
- [Cocoa] Bugfix: A dependency on an external constant caused crashes on macOS 11 and earlier (#1985,#1994)
- [X11] Bugfix: Icon pixel format conversion worked only by accident, relying on undefined behavior (#1986)
New in GLFW 3.3.5 (Oct 28, 2021)
- Updated gamepad mappings from upstream
- Bugfix: Buffers were swapped at creation on single-buffered windows (#1873)
- Bugfix: Gamepad mapping updates could spam GLFW_INVALID_VALUE due to incompatible controllers sharing hardware ID (#1763)
- Bugfix: Native access functions for context handles did not check that the API matched
- [Win32] Bugfix: USE_MSVC_RUNTIME_LIBRARY_DLL had no effect on CMake 3.15 or later (#1783,#1796)
- [Win32] Bugfix: Compilation with LLVM for Windows failed (#1807,#1824,#1874)
- [Cocoa] Bugfix: The MoltenVK layer contents scale was updated only after related events were emitted
- [Cocoa] Bugfix: Moving the cursor programmatically would freeze it for a fraction of a second (#1962)
- [Cocoa] Bugfix: kIOMasterPortDefault was deprecated in macOS 12.0 (#1980)
- [X11] Bugfix: Changing GLFW_FLOATING could leak memory
- [Wayland] Bugfix: Some keys were not repeating in Wayland (#1908)
- [Wayland] Bugfix: Non-arrow cursors are offset from the hotspot (#1706,#1899)
- [Wayland] Bugfix: The O_CLOEXEC flag was not defined on FreeBSD
- [NSGL] Bugfix: Defining GL_SILENCE_DEPRECATION externally caused a duplicate definition warning (#1840)
- [EGL] Bugfix: The GLFW_DOUBLEBUFFER context attribute was ignored (#1843)
New in GLFW 3.3.4 (Apr 9, 2021)
- [X11] Bugfix: Some window attributes were not applied on leaving fullscreen (#1863)
New in GLFW 3.3.2 (Nov 6, 2020)
- [Win32] Bugfix: Super key was not released after Win+V hotkey (#1622)
- [Win32] Bugfix: glfwGetKeyName could access out of bounds and return an invalid pointer
- [Win32] Bugfix: Some synthetic key events were reported as GLFW_KEY_UNKNOWN (#1623)
- [Cocoa] Added support for VK_EXT_metal_surface (#1619)
- [Cocoa] Added locating the Vulkan loader at runtime in an application bundle
- [X11] Bugfix: glfwFocusWindow could terminate on older WMs or without a WM
- [X11] Bugfix: Creating an undecorated window could fail with BadMatch (#1620)
- [X11] Bugfix: Querying a disconnected monitor could segfault (#1602)
New in GLFW 3.1.1 (Mar 23, 2015)
- Made library compilation fail if any header option macros are defined
- Removed support for LCC and Borland C++
- Bugfix: glfwSetTime silently accepted invalid values
- [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
New in GLFW 3.1 (Jan 19, 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 CRTC
- [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 GLFW 3.0.4 (Jan 3, 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 GLFW 3.0.2 (Sep 23, 2013)
- 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.
New in GLFW 3.0.1 (Jun 17, 2013)
- Bugfix: The wrong name was used for the CMake variable for the Xxf86vm library
- [Win32] Bugfix: Context creation was attempted even if no valid pixel formats had been found
New in GLFW 2.7.9 (Jun 7, 2013)
- [Win32] Bugfix: Enabling or disabling the cursor for an inactive window did nothing (backported from 3.0)
- [Win32] Bugfix: The locked cursor was re-centered when the window was inactive (backported from 3.0
- [Win32] Bugfix: The cursor clip rectangle included the title bar (backported from 3.0)
New in GLFW 2.7.8 (Apr 6, 2013)
- This release adds fixes for a few minor bugs on each platform, most notably the flashing window on Win32 and a workaround for a bug in Mesa 9.x.: [Win32] Bugfix: The temporary window was shown before being destroyed (backported from 3.0)
- [X11] Bugfix: Some function pointer types were named incorrectly
- [X11] Bugfix: The Mesa 9.x implementation of GLX_ARB_create_context_profile is broken in some revisions (backported from 3.0)
New in GLFW 2.7.7 (Nov 9, 2012)
- Added Visual C++ 2012 project files for the static library, DLL and all test and example programs
- Bugfix: The GLFW_OPENGL_DEBUG_CONTEXT hint did not trigger context re-creation when WGL_ARB_create_context was available
- Bugfix: The GLFW_OPENGL_DEBUG_CONTEXT window parameter was not set after debug context creation
New in GLFW 2.7.4 (Mar 23, 2012)
- [X11] Bugfix: The library containing clock_gettime was not detected
- [X11] Bugfix: The POSIX monotonic clock was detected using a non-POSIX macro
- [Cocoa] Replaced deprecated Core Graphics event suppression call
- [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
New in GLFW 2.7.3 (Mar 23, 2012)
- 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
New in GLFW 2.7.2 (Mar 23, 2012)
- 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
New in GLFW 2.7.1 (Mar 23, 2012)
- 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
- Bugfix: The loop condition for saving video modes used the wrong index variable
- Bugfix: The iconified and active window states were not tracked
- Cleaned up depdendencies for libglfw.pc file
- bugfix: The dlopen fallback method for glfwGetProcAddress had been broken by unrelated edits
- Bugfix: Calling glXCreateContextAttribsARB with an unavailable OpenGL version caused the application to terminate with a BadMatch Xlib error
- 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
New in GLFW 2.7 (Mar 23, 2012)
- 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 glfwPollEvents after 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
- Added x11-dist-install install target, intended for packagers of GLFW
- Added x11-dist-clean build target, intended for developers of GLFW
- Added support for GLX_SGIX_fbconfig
- Added support for user-specified compilation flags via CFLAGS
- Added documentation of configuration macros
- Implemented support for GLFW_SYSTEM_KEYS
- Improved configuration and makefile creation logic
- Removed support for GLX version 1.2 and below
- Removed unnecessary calls to XSync
- removed use of legacy window style atoms
- Bugfix: Repeated keys would sometimes leak through despite key repeat being disabled
- Bugfix: Fullscreen window resizing would cause color buffer clearing without taking framebuffer objects into account
- Bugfix: AltGr was not reported as right Alt
- Bugfix: Window colormap was not freed
- Bugfix: Close callback was called for glfwCloseWindow
- Bugfix: Misspelt struct member in XF86VidMode code path
- 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
- Bugfix: Hidden cursor position snapped back when halfway from window center to edge
- Bugfix: Not properly verifying that the window was mapped before making certain calls caused a BadMatch error
- Bugfix: The response to _NET_WM_PING events was malformed
- Bugfix: Hidden cursor mode interfered with other applications when GLFW window was unfocused
- Bugfix: The invisible cursor objects used for hidden cursor mode were not freed
- Bugfix: EWMH-compliant window managers were incorrectly detected
- Bugfix: The EWMH code path for fullscreen windows did not present the window using _NET_ACTIVE_WINDOW
- Bugfix: The EWMH code path for fullscreen windows did not send a _NET_WM_STATE client message
- 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)
New in GLFW 2.6 (Mar 23, 2012)
- 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
- Win32] Bugfix: Removed assembly RDTSC timing code
- Win32] Bugfix: Hidden cursor was not clipped to windowed windows
- Added XRandR code path for fullscreen windows
- Added building of shared library
- Added ICCCM WM fullscreen hints
- Added support for the _NET_WM_PING protocol
- Added pkg-config file generation
- Added setting of WM size hints
- Bugfix: Removed assembly RDTSC timing code
- Bugfix: Window re-opening now works properly (including fullscreen windows)
- Bugfix: Potential crash bug in video mode matching code
- Bugfix: Static buffers imposed an invisible limit on reported video mode count
- Bugfix: Interaction with certain window managers when setting input focus would cause termination with a BadMatch error
- Bugfix: Keypad keys did not trigger the character callback
- [DOS] Obsoleted platform due to lack of maintainer and community interest
New in GLFW 2.5 (Mar 23, 2012)
- 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
- Added support for up to five mouse buttons
- Mouse down events capture mouse input
- Bugfix: The DLL now exports glfwSetTime
- Fix: The GLFW window is now placed in the upper left corner of the desktop working area
- Bugfix: More robust check for SwapInterval
- Added support for USB joysticks under Linux (/dev/input/js*)
- Bugfix: Added support for GLX extensions in glfwExtensionSupported
- Bugfix: More robust fullscreen mode (?)
- Bugfix: Runtime check of XF86VidMode support for the active display
- Bugfix: Some mouse button events were reported incorrectly
- Improved Intel mobile CPU detection (e.g. disables RDTSC timing on Centrino systems)