summaryrefslogtreecommitdiffhomepage
path: root/src/external
diff options
context:
space:
mode:
authorAlexandre Almeida <[email protected]>2024-03-14 12:54:39 -0300
committerGitHub <[email protected]>2024-03-14 16:54:39 +0100
commit9a8d73e6c32514275a0ba53fe528bcb7c2693e27 (patch)
tree9563c5000626b6e487fbccf439c9b71e7125e8cc /src/external
parent42db6badd0848109746d6186792cf6a60363d7b3 (diff)
downloadraylib-9a8d73e6c32514275a0ba53fe528bcb7c2693e27.tar.gz
raylib-9a8d73e6c32514275a0ba53fe528bcb7c2693e27.zip
Fix GLFW runtime platform detection (#3863)
* Fix GLFW runtime platform detection * Add libwayland-dev package to workflows * Add libxkbcommon-dev package to workflows * Add libwayland-bin package to codeql.yml * Add libwayland-client0 and libwayland-cursor0 packages to codeql.yml * Use libwayland-dev in codeql.yml * Add libxkbcommon-dev to codeql.yml * Remove libwayland-bin from linux.yml and linux_examples.yml (libwayland-dev includes it as a dependency) --------- Co-authored-by: Ray <[email protected]>
Diffstat (limited to 'src/external')
-rw-r--r--src/external/glfw/README.md474
-rw-r--r--src/external/glfw/src/cocoa_init.m7
-rw-r--r--src/external/glfw/src/cocoa_monitor.m3
-rw-r--r--src/external/glfw/src/cocoa_window.m28
-rw-r--r--src/external/glfw/src/null_window.c19
-rw-r--r--src/external/glfw/src/platform.c12
-rw-r--r--src/external/glfw/src/win32_init.c7
-rw-r--r--src/external/glfw/src/win32_window.c25
-rw-r--r--src/external/glfw/src/wl_init.c7
-rw-r--r--src/external/glfw/src/wl_window.c17
-rw-r--r--src/external/glfw/src/x11_init.c7
-rw-r--r--src/external/glfw/src/x11_window.c31
12 files changed, 99 insertions, 538 deletions
diff --git a/src/external/glfw/README.md b/src/external/glfw/README.md
index efd1383f..c5501ffa 100644
--- a/src/external/glfw/README.md
+++ b/src/external/glfw/README.md
@@ -1,458 +1,18 @@
-# GLFW
-
-[![Build status](https://github.com/glfw/glfw/actions/workflows/build.yml/badge.svg)](https://github.com/glfw/glfw/actions)
-[![Build status](https://ci.appveyor.com/api/projects/status/0kf0ct9831i5l6sp/branch/master?svg=true)](https://ci.appveyor.com/project/elmindreda/glfw)
-
-## Introduction
-
-GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan
-application development. It provides a simple, platform-independent API for
-creating windows, contexts and surfaces, reading input, handling events, etc.
-
-GLFW natively supports Windows, macOS and Linux and other Unix-like systems. On
-Linux both Wayland and X11 are supported.
-
-GLFW is licensed under the [zlib/libpng
-license](https://www.glfw.org/license.html).
-
-You can [download](https://www.glfw.org/download.html) the latest stable release
-as source or Windows binaries. Each release starting with 3.0 also has
-a corresponding [annotated tag](https://github.com/glfw/glfw/releases) with
-source and binary archives.
-
-The [documentation](https://www.glfw.org/docs/latest/) is available online and is
-included in all source and binary archives. See the [release
-notes](https://www.glfw.org/docs/latest/news.html) for new features, caveats and
-deprecations in the latest release. For more details see the [version
-history](https://www.glfw.org/changelog.html).
-
-The `master` branch is the stable integration branch and _should_ always compile
-and run on all supported platforms, although details of newly added features may
-change until they have been included in a release. New features and many bug
-fixes live in [other branches](https://github.com/glfw/glfw/branches/all) until
-they are stable enough to merge.
-
-If you are new to GLFW, you may find the
-[tutorial](https://www.glfw.org/docs/latest/quick.html) for GLFW 3 useful. If
-you have used GLFW 2 in the past, there is a [transition
-guide](https://www.glfw.org/docs/latest/moving.html) for moving to the GLFW
-3 API.
-
-GLFW exists because of the contributions of [many people](CONTRIBUTORS.md)
-around the world, whether by reporting bugs, providing community support, adding
-features, reviewing or testing code, debugging, proofreading docs, suggesting
-features or fixing bugs.
-
-
-## Compiling GLFW
-
-GLFW is written primarily in C99, with parts of macOS support being written in
-Objective-C. GLFW itself requires only the headers and libraries for your OS
-and window system. It does not need any additional headers for context creation
-APIs (WGL, GLX, EGL, NSGL, OSMesa) or rendering APIs (OpenGL, OpenGL ES, Vulkan)
-to enable support for them.
-
-GLFW supports compilation on Windows with Visual C++ 2013 and later, MinGW and
-MinGW-w64, on macOS with Clang and on Linux and other Unix-like systems with GCC
-and Clang. It will likely compile in other environments as well, but this is
-not regularly tested.
-
-There are [pre-compiled binaries](https://www.glfw.org/download.html) available
-for all supported compilers on Windows and macOS.
-
-See the [compilation guide](https://www.glfw.org/docs/latest/compile.html) for
-more information about how to compile GLFW yourself.
-
-
-## Using GLFW
-
-See the [documentation](https://www.glfw.org/docs/latest/) for tutorials, guides
-and the API reference.
-
-
-## Contributing to GLFW
-
-See the [contribution
-guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for
-more information.
-
-
-## System requirements
-
-GLFW supports Windows XP and later and macOS 10.8 and later. Linux and other
-Unix-like systems running the X Window System are supported even without
-a desktop environment or modern extensions, although some features require
-a running window or clipboard manager. The OSMesa backend requires Mesa 6.3.
-
-See the [compatibility guide](https://www.glfw.org/docs/latest/compat.html)
-in the documentation for more information.
-
-
-## Dependencies
-
-GLFW itself needs only CMake 3.1 or later and the headers and libraries for your
-OS and window system.
-
-The examples and test programs depend on a number of tiny libraries. These are
-located in the `deps/` directory.
-
- - [getopt\_port](https://github.com/kimgr/getopt_port/) for examples
- with command-line options
- - [TinyCThread](https://github.com/tinycthread/tinycthread) for threaded
- examples
- - [glad2](https://github.com/Dav1dde/glad) for loading OpenGL and Vulkan
- functions
- - [linmath.h](https://github.com/datenwolf/linmath.h) for linear algebra in
- examples
- - [Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) for test and example UI
- - [stb\_image\_write](https://github.com/nothings/stb) for writing images to disk
-
-The documentation is generated with [Doxygen](https://doxygen.org/) if CMake can
-find that tool.
-
-
-## Reporting bugs
-
-Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues).
-Please check the [contribution
-guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for
-information on what to include when reporting a bug.
-
-
-## Changelog since 3.3.10
-
- - 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)
-
-
-## Changelog since 3.3
-
- - Added `GLFW_WAYLAND_LIBDECOR` init hint for disabling libdecor support (#1639,#1693)
- - Bugfix: The CMake config-file package used an absolute path and was not
- relocatable (#1470)
- - Bugfix: Video modes with a duplicate screen area were discarded (#1555,#1556)
- - Bugfix: Compiling with -Wextra-semi caused warnings (#1440)
- - Bugfix: Built-in mappings failed because some OEMs re-used VID/PID (#1583)
- - Bugfix: Some extension loader headers did not prevent default OpenGL header
- inclusion (#1695)
- - 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
- - Bugfix: `glfwMakeContextCurrent` would access TLS slot before initialization
- - Bugfix: `glfwSetGammaRamp` could emit `GLFW_INVALID_VALUE` before initialization
- - Bugfix: `glfwGetJoystickUserPointer` returned `NULL` during disconnection (#2092)
- - 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] Disabled framebuffer transparency on Windows 7 when DWM windows are
- opaque (#1512)
- - [Win32] Bugfix: `GLFW_INCLUDE_VULKAN` plus `VK_USE_PLATFORM_WIN32_KHR` caused
- symbol redefinition (#1524)
- - [Win32] Bugfix: The cursor position event was emitted before its cursor enter
- event (#1490)
- - [Win32] Bugfix: The window hint `GLFW_MAXIMIZED` did not move or resize the
- window (#1499)
- - [Win32] Bugfix: Disabled cursor mode interfered with some non-client actions
- - [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)
- - [Win32] Bugfix: Non-BMP Unicode codepoint input was reported as UTF-16
- - [Win32] Bugfix: Monitor functions could return invalid values after
- configuration change (#1761)
- - [Win32] Bugfix: Initialization would segfault on Windows 8 (not 8.1) (#1775)
- - [Win32] Bugfix: Duplicate size events were not filtered (#1610)
- - [Win32] Bugfix: Full screen windows were incorrectly resized by DPI changes
- (#1582)
- - [Win32] Bugfix: `GLFW_SCALE_TO_MONITOR` had no effect on systems older than
- Windows 10 version 1703 (#1511)
- - [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)
- - [Win32] Bugfix: Content scale queries could fail silently (#1615)
- - [Win32] Bugfix: Content scales could have garbage values if monitor was recently
- disconnected (#1615)
- - [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
- - [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)
- - [Win32] Bugfix: `glfwWaitEventsTimeout` did not return for some sent messages (#2408)
- - [Win32] Bugfix: Fix pkg-config for dynamic library on Windows (#2386, #2420)
- - [Win32] Bugfix: XInput could reportedly provide invalid DPad bit masks (#2291)
- - [Win32] Bugfix: Rapid clipboard calls could fail due to Clipboard History
- - [Win32] Bugfix: Disabled cursor mode doesn't work right when connected over RDP (#1276,#1279,#2431)
- - [Cocoa] Added support for `VK_EXT_metal_surface` (#1619)
- - [Cocoa] Added locating the Vulkan loader at runtime in an application bundle
- - [Cocoa] Changed `EGLNativeWindowType` from `NSView` to `CALayer` (#1169)
- - [Cocoa] Changed F13 key to report Print Screen for cross-platform consistency
- (#1786)
- - [Cocoa] Disabled macOS fullscreen when `GLFW_RESIZABLE` is false
- - [Cocoa] Removed dependency on the CoreVideo framework
- - [Cocoa] Bugfix: `glfwSetWindowSize` used a bottom-left anchor point (#1553)
- - [Cocoa] Bugfix: Window remained on screen after destruction until event poll
- (#1412)
- - [Cocoa] Bugfix: Event processing before window creation would assert (#1543)
- - [Cocoa] Bugfix: Undecorated windows could not be iconified on recent macOS
- - [Cocoa] Bugfix: Non-BMP Unicode codepoint input was reported as UTF-16
- (#1635)
- - [Cocoa] Bugfix: Failing to retrieve the refresh rate of built-in displays
- could leak memory
- - [Cocoa] Bugfix: Objective-C files were compiled as C with CMake 3.19 (#1787)
- - [Cocoa] Bugfix: Duplicate video modes were not filtered out (#1830)
- - [Cocoa] Bugfix: Menu bar was not clickable on macOS 10.15+ until it lost and
- regained focus (#1648,#1802)
- - [Cocoa] Bugfix: Monitor name query could segfault on macOS 11 (#1809,#1833)
- - [Cocoa] Bugfix: The install name of the installed dylib was relative (#1504)
- - [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)
- - [Cocoa] Bugfix: `kUTTypeURL` was deprecated in macOS 12.0 (#2003)
- - [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)
- - [Cocoa] Bugfix: Compilation failed on OS X 10.8 due to unconditional use of 10.9+
- symbols (#2161)
- - [Cocoa] Bugfix: Querying joystick elements could reportedly segfault on macOS
- 13 Ventura (#2320)
- - [X11] Bugfix: The CMake files did not check for the XInput headers (#1480)
- - [X11] Bugfix: Key names were not updated when the keyboard layout changed
- (#1462,#1528)
- - [X11] Bugfix: Decorations could not be enabled after window creation (#1566)
- - [X11] Bugfix: Content scale fallback value could be inconsistent (#1578)
- - [X11] Bugfix: `glfwMaximizeWindow` had no effect on hidden windows
- - [X11] Bugfix: Clearing `GLFW_FLOATING` on a hidden window caused invalid read
- - [X11] Bugfix: Changing `GLFW_FLOATING` on a hidden window could silently fail
- - [X11] Bugfix: Disabled cursor mode was interrupted by indicator windows
- - [X11] Bugfix: Monitor physical dimensions could be reported as zero mm
- - [X11] Bugfix: Window position events were not emitted during resizing (#1613)
- - [X11] Bugfix: `glfwFocusWindow` could terminate on older WMs or without a WM
- - [X11] Bugfix: Querying a disconnected monitor could segfault (#1602)
- - [X11] Bugfix: IME input of CJK was broken for "C" locale (#1587,#1636)
- - [X11] Bugfix: Xlib errors caused by other parts of the application could be
- reported as GLFW errors
- - [X11] Bugfix: A handle race condition could cause a `BadWindow` error (#1633)
- - [X11] Bugfix: XKB path used keysyms instead of physical locations for
- non-printable keys (#1598)
- - [X11] Bugfix: Function keys were mapped to `GLFW_KEY_UNKNOWN` for some layout
- combinations (#1598)
- - [X11] Bugfix: Keys pressed simultaneously with others were not always
- reported (#1112,#1415,#1472,#1616)
- - [X11] Bugfix: Some window attributes were not applied on leaving fullscreen
- (#1863)
- - [X11] Bugfix: Changing `GLFW_FLOATING` could leak memory
- - [X11] Bugfix: Icon pixel format conversion worked only by accident, relying on
- undefined behavior (#1986)
- - [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)
- - [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 improved fallback window decorations via libdecor (#1639,#1693)
- - [Wayland] Added support for key names via xkbcommon
- - [Wayland] Added support for file path drop events (#2040)
- - [Wayland] Added support for more human-readable monitor names where available
- - [Wayland] Disabled alpha channel for opaque windows on systems lacking
- `EGL_EXT_present_opaque` (#1895)
- - [Wayland] Removed support for `wl_shell` (#1443)
- - [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432)
- - [Wayland] Bugfix: Repeated keys could be reported with `NULL` window (#1704)
- - [Wayland] Bugfix: Retrieving partial framebuffer size would segfault
- - [Wayland] Bugfix: Scrolling offsets were inverted compared to other platforms
- (#1463)
- - [Wayland] Bugfix: Client-Side Decorations were destroyed in the wrong order
- (#1798)
- - [Wayland] Bugfix: Monitors physical size could report zero (#1784,#1792)
- - [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
- - [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)
- - [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_FEATURE_UNAVAILABLE`
- - [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
- - [Wayland] Bugfix: Connecting a mouse after `glfwInit` would segfault (#1450)
- - [Wayland] Bugfix: Joysticks connected after `glfwInit` were not detected (#2198)
- - [Wayland] Bugfix: Fallback decorations emitted `GLFW_CURSOR_UNAVAILABLE` errors
- - [Linux] Bugfix: Joysticks without buttons were ignored (#2042,#2043)
- - [Linux] Bugfix: A small amount of memory could leak if initialization failed (#2229)
- - [NSGL] Bugfix: `GLFW_COCOA_RETINA_FRAMEBUFFER` had no effect on newer
- macOS versions (#1442)
- - [NSGL] Bugfix: Workaround for swap interval on 10.14 broke on 10.12 (#1483)
- - [NSGL] Bugfix: Defining `GL_SILENCE_DEPRECATION` externally caused
- a duplicate definition warning (#1840)
- - [EGL] Added loading of glvnd `libOpenGL.so.0` where available for OpenGL
- - [EGL] Bugfix: The `GLFW_DOUBLEBUFFER` context attribute was ignored (#1843)
- - [EGL] Bugfix: Setting `GLFW_CONTEXT_DEBUG` caused creation to fail (#2348)
- - [GLX] Added loading of glvnd `libGLX.so.0` where available
- - [GLX] Bugfix: Context creation failed if GLX 1.4 was not exported by GLX library
-
-
-## Contact
-
-On [glfw.org](https://www.glfw.org/) you can find the latest version of GLFW, as
-well as news, documentation and other information about the project.
-
-If you have questions related to the use of GLFW, we have a
-[forum](https://discourse.glfw.org/).
-
-If you have a bug to report, a patch to submit or a feature you'd like to
-request, please file it in the
-[issue tracker](https://github.com/glfw/glfw/issues) on GitHub.
-
-Finally, if you're interested in helping out with the development of GLFW or
-porting it to your favorite platform, join us on the forum or GitHub.
+# GLFW (modified for raylib)
+
+This directory contains a modification of GLFW, whose official website and
+upstream repository are https://glfw.org and https://github.com/glfw/glfw,
+respectively.
+
+In this modification, some static functions sharing the same name in different
+platforms have been renamed so all of GLFW's source files can be combined into
+one (as done by ``rglfw.c``). Also, the Null platform, which is not used by
+raylib, has been disabled. The renamed functions are:
+
+``
+createKeyTables()
+translateKey()
+acquireMonitor()
+releaseMonitor()
+``
diff --git a/src/external/glfw/src/cocoa_init.m b/src/external/glfw/src/cocoa_init.m
index e75a5519..f34d985e 100644
--- a/src/external/glfw/src/cocoa_init.m
+++ b/src/external/glfw/src/cocoa_init.m
@@ -1,7 +1,8 @@
//========================================================================
-// GLFW 3.4 macOS - www.glfw.org
+// GLFW 3.4 macOS (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2009-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -175,7 +176,7 @@ static void createMenuBar(void)
// Create key code translation tables
//
-static void createKeyTables(void)
+static void createKeyTablesCocoa(void)
{
memset(_glfw.ns.keycodes, -1, sizeof(_glfw.ns.keycodes));
memset(_glfw.ns.scancodes, -1, sizeof(_glfw.ns.scancodes));
@@ -618,7 +619,7 @@ int _glfwInitCocoa(void)
name:NSTextInputContextKeyboardSelectionDidChangeNotification
object:nil];
- createKeyTables();
+ createKeyTablesCocoa();
_glfw.ns.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
if (!_glfw.ns.eventSource)
diff --git a/src/external/glfw/src/cocoa_monitor.m b/src/external/glfw/src/cocoa_monitor.m
index 641d5f0b..a2bcc2f4 100644
--- a/src/external/glfw/src/cocoa_monitor.m
+++ b/src/external/glfw/src/cocoa_monitor.m
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 macOS - www.glfw.org
+// GLFW 3.4 macOS (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
diff --git a/src/external/glfw/src/cocoa_window.m b/src/external/glfw/src/cocoa_window.m
index 0dcf0a38..949cace8 100644
--- a/src/external/glfw/src/cocoa_window.m
+++ b/src/external/glfw/src/cocoa_window.m
@@ -111,7 +111,7 @@ static void updateCursorMode(_GLFWwindow* window)
// Make the specified window and its video mode active on its monitor
//
-static void acquireMonitor(_GLFWwindow* window)
+static void acquireMonitorCocoa(_GLFWwindow* window)
{
_glfwSetVideoModeCocoa(window->monitor, &window->videoMode);
const CGRect bounds = CGDisplayBounds(window->monitor->ns.displayID);
@@ -127,7 +127,7 @@ static void acquireMonitor(_GLFWwindow* window)
// Remove the window and restore the original video mode
//
-static void releaseMonitor(_GLFWwindow* window)
+static void releaseMonitorCocoa(_GLFWwindow* window)
{
if (window->monitor->window != window)
return;
@@ -158,7 +158,7 @@ static int translateFlags(NSUInteger flags)
// Translates a macOS keycode to a GLFW keycode
//
-static int translateKey(unsigned int key)
+static int translateKeyCocoa(unsigned int key)
{
if (key >= sizeof(_glfw.ns.keycodes) / sizeof(_glfw.ns.keycodes[0]))
return GLFW_KEY_UNKNOWN;
@@ -277,7 +277,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)windowDidMiniaturize:(NSNotification *)notification
{
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorCocoa(window);
_glfwInputWindowIconify(window, GLFW_TRUE);
}
@@ -285,7 +285,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)windowDidDeminiaturize:(NSNotification *)notification
{
if (window->monitor)
- acquireMonitor(window);
+ acquireMonitorCocoa(window);
_glfwInputWindowIconify(window, GLFW_FALSE);
}
@@ -561,7 +561,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)keyDown:(NSEvent *)event
{
- const int key = translateKey([event keyCode]);
+ const int key = translateKeyCocoa([event keyCode]);
const int mods = translateFlags([event modifierFlags]);
_glfwInputKey(window, key, [event keyCode], GLFW_PRESS, mods);
@@ -574,7 +574,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
int action;
const unsigned int modifierFlags =
[event modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;
- const int key = translateKey([event keyCode]);
+ const int key = translateKeyCocoa([event keyCode]);
const int mods = translateFlags(modifierFlags);
const NSUInteger keyFlag = translateKeyToModifierFlag(key);
@@ -593,7 +593,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)keyUp:(NSEvent *)event
{
- const int key = translateKey([event keyCode]);
+ const int key = translateKeyCocoa([event keyCode]);
const int mods = translateFlags([event modifierFlags]);
_glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods);
}
@@ -966,7 +966,7 @@ GLFWbool _glfwCreateWindowCocoa(_GLFWwindow* window,
{
_glfwShowWindowCocoa(window);
_glfwFocusWindowCocoa(window);
- acquireMonitor(window);
+ acquireMonitorCocoa(window);
if (wndconfig->centerCursor)
_glfwCenterCursorInContentArea(window);
@@ -996,7 +996,7 @@ void _glfwDestroyWindowCocoa(_GLFWwindow* window)
[window->ns.object orderOut:nil];
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorCocoa(window);
if (window->context.destroy)
window->context.destroy(window);
@@ -1083,7 +1083,7 @@ void _glfwSetWindowSizeCocoa(_GLFWwindow* window, int width, int height)
if (window->monitor)
{
if (window->monitor->window == window)
- acquireMonitor(window);
+ acquireMonitorCocoa(window);
}
else
{
@@ -1252,7 +1252,7 @@ void _glfwSetWindowMonitorCocoa(_GLFWwindow* window,
if (monitor)
{
if (monitor->window == window)
- acquireMonitor(window);
+ acquireMonitorCocoa(window);
}
else
{
@@ -1270,7 +1270,7 @@ void _glfwSetWindowMonitorCocoa(_GLFWwindow* window,
}
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorCocoa(window);
_glfwInputWindowMonitor(window, monitor);
@@ -1308,7 +1308,7 @@ void _glfwSetWindowMonitorCocoa(_GLFWwindow* window,
[window->ns.object setLevel:NSMainMenuWindowLevel + 1];
[window->ns.object setHasShadow:NO];
- acquireMonitor(window);
+ acquireMonitorCocoa(window);
}
else
{
diff --git a/src/external/glfw/src/null_window.c b/src/external/glfw/src/null_window.c
index 1db08114..cd23ae0b 100644
--- a/src/external/glfw/src/null_window.c
+++ b/src/external/glfw/src/null_window.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 - www.glfw.org
+// GLFW 3.4 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -59,12 +60,12 @@ static void fitToMonitor(_GLFWwindow* window)
window->null.height = mode.height;
}
-static void acquireMonitor(_GLFWwindow* window)
+static void acquireMonitorNull(_GLFWwindow* window)
{
_glfwInputMonitorWindow(window->monitor, window);
}
-static void releaseMonitor(_GLFWwindow* window)
+static void releaseMonitorNull(_GLFWwindow* window)
{
if (window->monitor->window != window)
return;
@@ -147,7 +148,7 @@ GLFWbool _glfwCreateWindowNull(_GLFWwindow* window,
{
_glfwShowWindowNull(window);
_glfwFocusWindowNull(window);
- acquireMonitor(window);
+ acquireMonitorNull(window);
if (wndconfig->centerCursor)
_glfwCenterCursorInContentArea(window);
@@ -168,7 +169,7 @@ GLFWbool _glfwCreateWindowNull(_GLFWwindow* window,
void _glfwDestroyWindowNull(_GLFWwindow* window)
{
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorNull(window);
if (_glfw.null.focusedWindow == window)
_glfw.null.focusedWindow = NULL;
@@ -203,14 +204,14 @@ void _glfwSetWindowMonitorNull(_GLFWwindow* window,
}
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorNull(window);
_glfwInputWindowMonitor(window, monitor);
if (window->monitor)
{
window->null.visible = GLFW_TRUE;
- acquireMonitor(window);
+ acquireMonitorNull(window);
fitToMonitor(window);
}
else
@@ -340,7 +341,7 @@ void _glfwIconifyWindowNull(_GLFWwindow* window)
_glfwInputWindowIconify(window, GLFW_TRUE);
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorNull(window);
}
}
@@ -352,7 +353,7 @@ void _glfwRestoreWindowNull(_GLFWwindow* window)
_glfwInputWindowIconify(window, GLFW_FALSE);
if (window->monitor)
- acquireMonitor(window);
+ acquireMonitorNull(window);
}
else if (window->null.maximized)
{
diff --git a/src/external/glfw/src/platform.c b/src/external/glfw/src/platform.c
index af1b0f44..c4b0a36e 100644
--- a/src/external/glfw/src/platform.c
+++ b/src/external/glfw/src/platform.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 - www.glfw.org
+// GLFW 3.4 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2018 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -74,15 +75,6 @@ GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform)
return GLFW_FALSE;
}
- // Only allow the Null platform if specifically requested
- if (desiredID == GLFW_PLATFORM_NULL)
- return _glfwConnectNull(desiredID, platform);
- else if (count == 0)
- {
- _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "This binary only supports the Null platform");
- return GLFW_FALSE;
- }
-
#if defined(_GLFW_WAYLAND) && defined(_GLFW_X11)
if (desiredID == GLFW_ANY_PLATFORM)
{
diff --git a/src/external/glfw/src/win32_init.c b/src/external/glfw/src/win32_init.c
index 824e383c..d86e35e3 100644
--- a/src/external/glfw/src/win32_init.c
+++ b/src/external/glfw/src/win32_init.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 Win32 - www.glfw.org
+// GLFW 3.4 Win32 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -195,7 +196,7 @@ static void freeLibraries(void)
// Create key code translation tables
//
-static void createKeyTables(void)
+static void createKeyTablesWin32(void)
{
int scancode;
@@ -685,7 +686,7 @@ int _glfwInitWin32(void)
if (!loadLibraries())
return GLFW_FALSE;
- createKeyTables();
+ createKeyTablesWin32();
_glfwUpdateKeyNamesWin32();
if (_glfwIsWindows10Version1703OrGreaterWin32())
diff --git a/src/external/glfw/src/win32_window.c b/src/external/glfw/src/win32_window.c
index e6a9496c..3762b769 100644
--- a/src/external/glfw/src/win32_window.c
+++ b/src/external/glfw/src/win32_window.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 Win32 - www.glfw.org
+// GLFW 3.4 Win32 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -439,7 +440,7 @@ static void fitToMonitor(_GLFWwindow* window)
// Make the specified window and its video mode active on its monitor
//
-static void acquireMonitor(_GLFWwindow* window)
+static void acquireMonitorWin32(_GLFWwindow* window)
{
if (!_glfw.win32.acquiredMonitorCount)
{
@@ -460,7 +461,7 @@ static void acquireMonitor(_GLFWwindow* window)
// Remove the window and restore the original video mode
//
-static void releaseMonitor(_GLFWwindow* window)
+static void releaseMonitorWin32(_GLFWwindow* window)
{
if (window->monitor->window != window)
return;
@@ -470,7 +471,7 @@ static void releaseMonitor(_GLFWwindow* window)
{
SetThreadExecutionState(ES_CONTINUOUS);
- // HACK: Restore mouse trail length saved in acquireMonitor
+ // HACK: Restore mouse trail length saved in acquireMonitorWin32
SystemParametersInfoW(SPI_SETMOUSETRAILS, _glfw.win32.mouseTrailSize, 0, 0);
}
@@ -1050,10 +1051,10 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
if (window->monitor && window->win32.iconified != iconified)
{
if (iconified)
- releaseMonitor(window);
+ releaseMonitorWin32(window);
else
{
- acquireMonitor(window);
+ acquireMonitorWin32(window);
fitToMonitor(window);
}
}
@@ -1534,7 +1535,7 @@ GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window,
{
_glfwShowWindowWin32(window);
_glfwFocusWindowWin32(window);
- acquireMonitor(window);
+ acquireMonitorWin32(window);
fitToMonitor(window);
if (wndconfig->centerCursor)
@@ -1556,7 +1557,7 @@ GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window,
void _glfwDestroyWindowWin32(_GLFWwindow* window)
{
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorWin32(window);
if (window->context.destroy)
window->context.destroy(window);
@@ -1677,7 +1678,7 @@ void _glfwSetWindowSizeWin32(_GLFWwindow* window, int width, int height)
{
if (window->monitor->window == window)
{
- acquireMonitor(window);
+ acquireMonitorWin32(window);
fitToMonitor(window);
}
}
@@ -1849,7 +1850,7 @@ void _glfwSetWindowMonitorWin32(_GLFWwindow* window,
{
if (monitor->window == window)
{
- acquireMonitor(window);
+ acquireMonitorWin32(window);
fitToMonitor(window);
}
}
@@ -1879,7 +1880,7 @@ void _glfwSetWindowMonitorWin32(_GLFWwindow* window,
}
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorWin32(window);
_glfwInputWindowMonitor(window, monitor);
@@ -1897,7 +1898,7 @@ void _glfwSetWindowMonitorWin32(_GLFWwindow* window,
flags |= SWP_FRAMECHANGED;
}
- acquireMonitor(window);
+ acquireMonitorWin32(window);
GetMonitorInfoW(window->monitor->win32.handle, &mi);
SetWindowPos(window->win32.handle, HWND_TOPMOST,
diff --git a/src/external/glfw/src/wl_init.c b/src/external/glfw/src/wl_init.c
index 3aff476d..2428c725 100644
--- a/src/external/glfw/src/wl_init.c
+++ b/src/external/glfw/src/wl_init.c
@@ -1,7 +1,8 @@
//========================================================================
-// GLFW 3.4 Wayland - www.glfw.org
+// GLFW 3.4 Wayland (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2014 Jonas Ådahl <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -257,7 +258,7 @@ static const struct wl_callback_listener libdecorReadyListener =
// Create key code translation tables
//
-static void createKeyTables(void)
+static void createKeyTablesWayland(void)
{
memset(_glfw.wl.keycodes, -1, sizeof(_glfw.wl.keycodes));
memset(_glfw.wl.scancodes, -1, sizeof(_glfw.wl.scancodes));
@@ -821,7 +822,7 @@ int _glfwInitWayland(void)
_glfw.wl.registry = wl_display_get_registry(_glfw.wl.display);
wl_registry_add_listener(_glfw.wl.registry, &registryListener, NULL);
- createKeyTables();
+ createKeyTablesWayland();
_glfw.wl.xkb.context = xkb_context_new(0);
if (!_glfw.wl.xkb.context)
diff --git a/src/external/glfw/src/wl_window.c b/src/external/glfw/src/wl_window.c
index 5b491ffb..505166ef 100644
--- a/src/external/glfw/src/wl_window.c
+++ b/src/external/glfw/src/wl_window.c
@@ -1,7 +1,8 @@
//========================================================================
-// GLFW 3.4 Wayland - www.glfw.org
+// GLFW 3.4 Wayland (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2014 Jonas Ådahl <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -498,7 +499,7 @@ static void setIdleInhibitor(_GLFWwindow* window, GLFWbool enable)
// Make the specified window and its video mode active on its monitor
//
-static void acquireMonitor(_GLFWwindow* window)
+static void acquireMonitorWayland(_GLFWwindow* window)
{
if (window->wl.libdecor.frame)
{
@@ -519,7 +520,7 @@ static void acquireMonitor(_GLFWwindow* window)
// Remove the window and restore the original video mode
//
-static void releaseMonitor(_GLFWwindow* window)
+static void releaseMonitorWayland(_GLFWwindow* window)
{
if (window->wl.libdecor.frame)
libdecor_frame_unset_fullscreen(window->wl.libdecor.frame);
@@ -1156,7 +1157,7 @@ static GLFWbool flushDisplay(void)
return GLFW_TRUE;
}
-static int translateKey(uint32_t scancode)
+static int translateKeyWayland(uint32_t scancode)
{
if (scancode < sizeof(_glfw.wl.keycodes) / sizeof(_glfw.wl.keycodes[0]))
return _glfw.wl.keycodes[scancode];
@@ -1270,7 +1271,7 @@ static void handleEvents(double* timeout)
for (uint64_t i = 0; i < repeats; i++)
{
_glfwInputKey(_glfw.wl.keyboardFocus,
- translateKey(_glfw.wl.keyRepeatScancode),
+ translateKeyWayland(_glfw.wl.keyRepeatScancode),
_glfw.wl.keyRepeatScancode,
GLFW_PRESS,
_glfw.wl.xkb.modifiers);
@@ -1773,7 +1774,7 @@ static void keyboardHandleKey(void* userData,
if (!window)
return;
- const int key = translateKey(scancode);
+ const int key = translateKeyWayland(scancode);
const int action =
state == WL_KEYBOARD_KEY_STATE_PRESSED ? GLFW_PRESS : GLFW_RELEASE;
@@ -2509,12 +2510,12 @@ void _glfwSetWindowMonitorWayland(_GLFWwindow* window,
}
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorWayland(window);
_glfwInputWindowMonitor(window, monitor);
if (window->monitor)
- acquireMonitor(window);
+ acquireMonitorWayland(window);
else
_glfwSetWindowSizeWayland(window, width, height);
}
diff --git a/src/external/glfw/src/x11_init.c b/src/external/glfw/src/x11_init.c
index e992f444..000bde29 100644
--- a/src/external/glfw/src/x11_init.c
+++ b/src/external/glfw/src/x11_init.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 X11 - www.glfw.org
+// GLFW 3.4 X11 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -210,7 +211,7 @@ static int translateKeySyms(const KeySym* keysyms, int width)
// Create key code translation tables
//
-static void createKeyTables(void)
+static void createKeyTablesX11(void)
{
int scancodeMin, scancodeMax;
@@ -908,7 +909,7 @@ static GLFWbool initExtensions(void)
// Update the key code LUT
// FIXME: We should listen to XkbMapNotify events to track changes to
// the keyboard mapping.
- createKeyTables();
+ createKeyTablesX11();
// String format atoms
_glfw.x11.NULL_ = XInternAtom(_glfw.x11.display, "NULL", False);
diff --git a/src/external/glfw/src/x11_window.c b/src/external/glfw/src/x11_window.c
index e0295465..49e60a50 100644
--- a/src/external/glfw/src/x11_window.c
+++ b/src/external/glfw/src/x11_window.c
@@ -1,8 +1,9 @@
//========================================================================
-// GLFW 3.4 X11 - www.glfw.org
+// GLFW 3.4 X11 (modified for raylib) - www.glfw.org; www.raylib.com
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <[email protected]>
+// Copyright (c) 2024 M374LX <[email protected]>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
@@ -235,9 +236,9 @@ static int translateState(int state)
// Translates an X11 key code to a GLFW key token
//
-static int translateKey(int scancode)
+static int translateKeyX11(int scancode)
{
- // Use the pre-filled LUT (see createKeyTables() in x11_init.c)
+ // Use the pre-filled LUT (see createKeyTablesX11() in x11_init.c)
if (scancode < 0 || scancode > 255)
return GLFW_KEY_UNKNOWN;
@@ -1081,7 +1082,7 @@ static const char* getSelectionString(Atom selection)
// Make the specified window and its video mode active on its monitor
//
-static void acquireMonitor(_GLFWwindow* window)
+static void acquireMonitorX11(_GLFWwindow* window)
{
if (_glfw.x11.saver.count == 0)
{
@@ -1120,7 +1121,7 @@ static void acquireMonitor(_GLFWwindow* window)
// Remove the window and restore the original video mode
//
-static void releaseMonitor(_GLFWwindow* window)
+static void releaseMonitorX11(_GLFWwindow* window)
{
if (window->monitor->window != window)
return;
@@ -1242,7 +1243,7 @@ static void processEvent(XEvent *event)
case KeyPress:
{
- const int key = translateKey(keycode);
+ const int key = translateKeyX11(keycode);
const int mods = translateState(event->xkey.state);
const int plain = !(mods & (GLFW_MOD_CONTROL | GLFW_MOD_ALT));
@@ -1314,7 +1315,7 @@ static void processEvent(XEvent *event)
case KeyRelease:
{
- const int key = translateKey(keycode);
+ const int key = translateKeyX11(keycode);
const int mods = translateState(event->xkey.state);
if (!_glfw.x11.xkb.detectable)
@@ -1806,9 +1807,9 @@ static void processEvent(XEvent *event)
if (window->monitor)
{
if (iconified)
- releaseMonitor(window);
+ releaseMonitorX11(window);
else
- acquireMonitor(window);
+ acquireMonitorX11(window);
}
window->x11.iconified = iconified;
@@ -2025,7 +2026,7 @@ GLFWbool _glfwCreateWindowX11(_GLFWwindow* window,
{
_glfwShowWindowX11(window);
updateWindowMode(window);
- acquireMonitor(window);
+ acquireMonitorX11(window);
if (wndconfig->centerCursor)
_glfwCenterCursorInContentArea(window);
@@ -2050,7 +2051,7 @@ void _glfwDestroyWindowX11(_GLFWwindow* window)
enableCursor(window);
if (window->monitor)
- releaseMonitor(window);
+ releaseMonitorX11(window);
if (window->x11.ic)
{
@@ -2206,7 +2207,7 @@ void _glfwSetWindowSizeX11(_GLFWwindow* window, int width, int height)
if (window->monitor)
{
if (window->monitor->window == window)
- acquireMonitor(window);
+ acquireMonitorX11(window);
}
else
{
@@ -2477,7 +2478,7 @@ void _glfwSetWindowMonitorX11(_GLFWwindow* window,
if (monitor)
{
if (monitor->window == window)
- acquireMonitor(window);
+ acquireMonitorX11(window);
}
else
{
@@ -2496,7 +2497,7 @@ void _glfwSetWindowMonitorX11(_GLFWwindow* window,
{
_glfwSetWindowDecoratedX11(window, window->decorated);
_glfwSetWindowFloatingX11(window, window->floating);
- releaseMonitor(window);
+ releaseMonitorX11(window);
}
_glfwInputWindowMonitor(window, monitor);
@@ -2511,7 +2512,7 @@ void _glfwSetWindowMonitorX11(_GLFWwindow* window,
}
updateWindowMode(window);
- acquireMonitor(window);
+ acquireMonitorX11(window);
}
else
{