New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a window hint for setting app_id on wayland #2122
Conversation
Any chance the default |
@TheBrokenRail When would that be preferable over this window hint string? |
Mainly so that you don't have to set the hint string. Right now on X11, everything just works by default because the On Wayland, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks promising! Thank you for adding all the necessary bits of documentation! Found a few minor things that need fixing.
@@ -637,6 +640,8 @@ static GLFWbool createSurface(_GLFWwindow* window, | |||
window->wl.height = wndconfig->height; | |||
window->wl.scale = 1; | |||
window->wl.title = _glfw_strdup(wndconfig->title); | |||
if (strlen(wndconfig->wl.appId)) | |||
window->wl.appId = _glfw_strdup(wndconfig->wl.appId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This allocation needs to be freed at window destruction. Alternatively, since the maximum length of the string is known, the struct member can be made a char array.
@subsubsection wayland_app_id_32 Wayland app_id specification | ||
|
||
GLFW now supports specifying the app_id for a wayland window using the | ||
@ref GLFW_WAYLAND_APP_ID window hint string. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should probably link to GLFW_WAYLAND_APP_ID_hint
, like in the header file documentation snippet.
@@ -579,6 +579,9 @@ static GLFWbool createXdgSurface(_GLFWwindow* window) | |||
&xdgToplevelListener, | |||
window); | |||
|
|||
if (strlen(window->wl.appId)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the struct member is only set if the hint is a non-empty string, not setting the hint causes a segfault here.
Thank you for the PR! It has been merged as b9ed25d. |
Squashed commit of the following: commit cf29ff2b9d5f2b66f8fc714e14b86989a7aa388d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jan 15 00:28:00 2024 +0100 Update CODEOWNERS file commit 8ff8d675607463cbff7a2c59af6cb9751972c259 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jan 15 00:23:20 2024 +0100 Set timeout for build GH workflow jobs This is in order to catch and stop any malfunctioning job. commit d2b88cf7ab6eb8a0501985d10969641a4ba74c0d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jan 12 17:42:37 2024 +0100 Update documentation for native access errors The GLFW_PLATFORM_UNAVAILABLE error was not listed for those native access function that can emit it. The order of errors for many functions in glfw3native.h did not match the order used in glfw3.h. The documentation for GLFW_PLATFORM_UNAVAILABLE was a little bit terse. commit 200639712b15ca7b845d3890e0e6e89ba821ad53 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jan 12 13:02:50 2024 +0100 Add initial .editorconfig file commit 507621977f81dcbf926e8452bcbc1b147570016a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jan 11 18:03:18 2024 +0100 Win32: Remove unofficial support for VS 2008 Related to #2465 commit 29885c69422d837d210405b5ea1701286586f383 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jan 17 03:25:54 2020 +0100 Win32: Improve clipboard contention issue This is primarily a workaround for a GLFW application reading and/or writing to the clipboard in rapid succession and catching up with the Windows Clipboard History, which also has to contend for the lock. commit 2c3eb75748584c1c9283787e8c40f944fa055d6f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 5 23:03:25 2023 +0100 Wayland: Remove dependency on wayland-protocols This brings the latest released versions of all used Wayland protocol files into this repository, removing the need for the user to arrange a sufficiently new version of wayland-protocols. The wayland.xml protocol file was copied from wayland 1.22.0. The additional protocol files were copied from wayland-protocols 1.32. Because of how files are moved and renamed inside the wayland-protocols repository, it will not always be possible to update all our protocol files from a single release without also potentially updating related code (acceptable) and prematurely breaking compatibility with compositors that still only support an earlier incompatible version (unacceptable). The macro in src/CMakeLists.txt has been modified to hopefully make it easier to add new protocol files. This made it necessary to change the name of a few of the generated header files. Closes #2053 commit 73948e6c0f15b1053cf74b7c4e6b04fd36e97e29 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jan 4 20:07:27 2024 +0100 Fix missing error in docs for glfwCreateWindow The GLFW_NO_WINDOW_CONTEXT error can be emitted if the window passed in for context sharing does not have a context. Fixes #2456 commit 5a9ea8f99f27cfb0bf47ecc23fdc24e98098de6b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jan 3 18:01:56 2024 +0100 Add build- prefix to .gitignore commit 4e8c4901e9985765a3951423ff9174459339a62b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jan 3 18:01:29 2024 +0100 Wayland: Fix segfault on termination A segfault could occur during termination if libdecor was found but no windows were created between initialization and termination. The wait for libdecor to finish its initialization was only performed before window creation, not at termination. Regression introduced by 9fdc425931888ea70bc095e53cc006fca8ccb703. commit d9646631d6669c6006f31b1bbb5e14909165e7cd Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Dec 15 00:12:38 2023 +0100 Removed unused header in sharing example commit 6b39ab00748ca927456d998293fa967f2b86cf9f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 30 19:54:38 2023 +0100 Improve coverage of GH build workflow This adds Null-only and Wayland-only builds, while rearranging jobs by host OS instead of by target platform. Every useful combination of platforms is now being built, except for Null-only with Win32 time and threading. This combination does not compile on VS due to some non-standard array initializers. commit 40aa77a1607a6847f88cd9abc96f8fe4da3943a1 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 30 19:02:38 2023 +0100 Remove superfluous CMake flag in GH build workflow The source directory already defaults to the current directory. commit 9f6da7e7c64572436fcd56022f4147270f47deef Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jan 10 00:47:18 2024 +0100 Win32: Fix some of the errors for Null-only on VS This workaround is needed whenever windows.h is included after glfw3.h. commit ab09dc8fb17ab08a6b318417b84896801568c002 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Dec 14 15:27:53 2023 +0100 Add credit I lost track of the existing PR #2245 when fixing #2161 with 5e4496cb420df4d93b4a31805b9fef443433f73b. Closes #2245 commit b4c3ef9d0fdf46845f3e81e5d989dab06e71e6c1 Author: Doug Binks <doug@enkisoftware.com> Date: Sun Dec 24 12:23:23 2023 +0000 Clarify documentation for contributing Added location of credits, news and guides. commit 2c1d31009fdc527d5a44ff887659a25ecbf1f7f0 Author: Camilla Löwy <elmindreda@glfw.org> Date: Tue Dec 12 17:38:52 2023 +0100 Cocoa: Fix segfault querying joystick elements It is reportedly possible for IOHIDDeviceCopyMatchingElements to return NULL on macOS 13 if the application lacks input monitoring permissions. This commit only prevents the segfault. More work will be needed to correctly handle this situation, including Game Controller support. Related to #2320 Closes #2321 commit ea3ea627086f06f207928dceb61a8ea5d0fb3fb2 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 12 13:39:54 2023 +0100 Update changelog and add credit Related to #2348 commit eeeb56eb23c9a23866e8042fb23d7b0b4d96d106 Author: lo-v-ol <gh@oleg.uk> Date: Mon Jun 5 08:56:15 2023 +0100 EGL: Fix GLFW_CONTEXT_NO_ERROR on Mesa Mesa EGL requires the context version to be set to 2.0 or greater before EGL_CONTEXT_OPENGL_NO_ERROR_KHR in the attribute list. Without this, context creation via Mesa EGL with EGL_CONTEXT_OPENGL_NO_ERROR_KHR set fails with EGL_BAD_ATTRIBUTE. Fixes #2348 commit 378e5fc814ec7d6071d7b3423aac5182b0336f1e Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 12 13:46:48 2023 +0100 Fix Markdown formatting for changelog entry commit 7b152019dab027dfd276e37cacaacd439075f6c3 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Dec 11 17:07:47 2023 +0100 Add credit Related to #2377 Related to #2405 commit 8e9a5d29a8258d2e82250102db9ae713794be321 Author: FuzzyQuills <neubot321@gmail.com> Date: Tue Dec 12 06:25:44 2023 +1000 Cocoa: No NSWindowStyleMaskResizable in fullscreen On macOS 10.15 Catalina and earlier, not having the resizable bit cleared in NSWindowStyleMask in fullscreen leads to windows minimising when clicked anywhere in the content area. On all tested macOS versions it also causes the fullscreen window to be resizable by the user. Regression introduced by 0d599026d04ddcc2695ae938fc1864523dab7a34. Fixes #2377 Closes #2405 commit 46cebb5081820418f2a20f3e90b07f9b1bd44b42 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Dec 7 16:51:13 2023 +0100 EGL: Only use EGL_EXT_present_opaque on Wayland The EGL_EXT_present_opaque extension is primarily a workaround meant for Wayland, even if the language in it doesn't mention this. GLFW previously always enabled this extension where supported. This caused issues on X11 when running the Nvidia binary blob. This commit ensures the extension is only enabled on Wayland. Fixes #2365 commit 68edc66aa4e0bcd2772e60711331629e9e369916 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Dec 7 16:01:47 2023 +0100 Add credit Fixes #2397 commit ddd92a4fa8dea2729ad2ea09172a8cfd541e53e7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Dec 6 17:02:24 2023 +0100 Update changelog and add credit Related to #2327 commit 5e4496cb420df4d93b4a31805b9fef443433f73b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 5 20:59:42 2023 +0100 Cocoa: Fix compilation error on OS X 10.8 The occlusion state parts of NSWindow are OS X 10.9+ only but we still (technically) support building for only 10.8. Fixes #2161 commit 0ede5f58c6f7c167499c0c78ce445828f44c15ed Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 5 22:14:53 2023 +0100 Simplify joystick hat value assertions commit 52405a9d599412545efd3bc3ace8342ae571ccd0 Author: Peter Johnson <johnson.peter@gmail.com> Date: Tue Mar 7 23:03:06 2023 -0800 Win32: Fix invalid hat bit mask being accepted It is reportedly possible to get opposing directions of an XInput DPad bit mask set simultaneously with some controllers. This commit ensures that those values are not passed on to other parts of GLFW. This commit is based on the PR #2291 by @ PeterJohnson but with the following changes: - moved XInput-specific special case to XInput implementation - attempt to preserve data by only masking out the invalid axis - admin (credit, changelog, commit message) Closes #2291 commit 9959dc69cadd1f7790060846ffbc44e7da56fc56 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Dec 4 20:06:10 2023 +0100 Improve documentation relating to key tokens Shifted the documentation away from the term 'named keys' as something different than keys that glfwGetKeyName will return a name for. The already existing term 'key token' should now be used to refer to the GLFW_KEY_* constants. The associated term 'named mouse button' was also replaced with 'supported mouse button'. The parts explaining which key tokens will return a valid scancode from glfwGetKeyScancode have hopefully been clarified. This issue was reported in #2055. The GLFW_KEY_UNKNOWN constant has been moved out of the list of key tokens to simplify and hopefully clarify the related documentation. Various other keyboard key related edits were made, hopefully resulting in improvements. Related to #2055 commit 557a633b2d926431090367e9536cd5ba661a276d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 5 15:53:42 2023 +0100 Fix list of possible errors for glfwGetKeyName commit b1517e5b3ee6f060f2e7ebd47c9de0c10e6ad411 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Dec 4 18:48:24 2023 +0100 Fix glfwGetKeyName not checking key token is valid commit 3f31519de81b943d17231b3d59108923d0d2e302 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Dec 3 17:40:42 2023 +0100 Clarify documentation for glfwMakeContextCurrent commit 1b2605dbcd674608ba3ef57ff40880c2bf899029 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Dec 3 17:23:37 2023 +0100 Fix missing new constant in release notes commit 93d70cb6a8c9571b5b493936596633a1a8538cea Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Dec 3 17:07:25 2023 +0100 Add assertions for context function invariants Related to #2327 commit fa0ea5c41f53119c68748a0e8570ef120b7fa703 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Dec 3 16:06:31 2023 +0100 Fix potential violation of invariant The shared function for reading back context attributes, _glfwRefreshContextAttribs, did not check whether the newly created context had been successfully made current. This violated the invariant that the context TLS slot always points to a valid window and that its context is current whenever _glfw.platform.getProcAddress is called. Related to #2327 commit 8c5471d6cdc6d87935e494b8c379f659e998bcf6 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Dec 1 13:22:11 2023 +0100 Fix return value on error for glfwGetKeyScancode The documentation says it should be -1, not zero. commit fb94e4268b222448a55b151f3c115f57f1e6540f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Dec 1 12:38:57 2023 +0100 Remove changelog entry This bug was introduced since the last release and should not be listed. commit d097e35743ee49d38811a89ea29c7f2525dc8d6a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 30 16:47:35 2023 +0100 Wayland: Fix heuristics for what counts as events The Wayland implementation of glfwWaitEvents* keeps waiting until it sees evidence that a significant event has been processed. However, this included updating an animated cursor (not a significant event) but did not include previously buffered Wayland events or libdecor events (definitely significant events). This commit corrects these cases. commit 23e40548b15db9a53a755d152d1fd2072c39610e Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Nov 29 16:25:29 2023 +0100 Wayland: Fix protocol error on undecorated window When setting the visibility of a libdecor frame on a compositor that supports XDG decorations, libdecor 0.1 will update the geometry of the XDG surface. GLFW attempted to set the visibility before having told libdecor what size the content area is. This caused a Wayland protocol error when libdecor attempted to set the window size to 0x0. This commit adds setting the content area size for the libdecor frame directly after creation, allowing libdecor to know what it's doing. commit 9fdc425931888ea70bc095e53cc006fca8ccb703 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 30 02:43:48 2023 +0100 Wayland: Use Wayland to wait for libdecor to init Much of libdecor is initialized only after certain events have been received from the compositor and some parts of libdecor 0.1 are unsafe to use until this delayed initialization has completed. Since libdecor does not provide an API to query if or be notified when this has happened, GLFW processed events until its newly created libdecor frame had created its XDG shell objects. This commit switches to using a generic Wayland sync point created just after libdecor (and presumably its plugin) has set up its delayed initialization, instead of relying on the more specific implementation detail mentioned above. It also makes this wait mandatory before the first libdecor frame is created instead of a pre-condition for certain libdecor frame calls, hopefully removing even more dependence on implementation details. commit 23ea072c4157f2a7760d26f4d6e375833646bd88 Author: Doug Binks <doug@enkisoftware.com> Date: Mon Nov 27 16:56:58 2023 +0000 Reorder changelog entry commit 659d161446ad6e3f3e67cdc1baabcf61abd70aef Author: Doug Binks <doug@enkisoftware.com> Date: Fri Nov 24 17:06:18 2023 +0000 Reorder credit commit dbe810e4036fa6640fbe5d509e1a551c8a77f371 Author: Grzesiek11 <grzesiek11@stary.pc.pl> Date: Fri Nov 24 18:04:13 2023 +0100 Documentation: only named keys generate synthetic key releases The current wording states that all keys have synthetic key release events generated after focus is lost, but keys that aren't named don't have any state held, so no such events are generated for them. The new wording clarifies that only named keys have the events generated for them. commit afd22ebcf34f2fa84d5b9f28103f014505ae8d47 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Nov 21 21:26:45 2023 +0100 Add credit Related to #2403 commit 97820bc329c603074ecdefdfdef339be776bd9f8 Author: Scr3amer <Scr3amDev@outlook.com> Date: Tue Nov 21 14:28:39 2023 -0500 Null: Remove duplicated function declaration The declaration of _glfwRequestWindowAttentionNull was duplicated. Closes #2403 commit d9709904fec956524d4e9032a7fa8d0550d5d49b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Nov 21 17:36:34 2023 +0100 Linux: Fix POSIX version not set for Null build When compiling GLFW on Linux with only the Null platform enabled, the CMake files did not set the required POSIX version macro. Fixes #2402 commit a87acd8c1fac78011013bebb537926e18fe49f46 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 16 20:47:27 2023 +0100 Update changelog and add credit Related to #2229 commit 2a4dd9c28f663c1ef410d6430aaa3fe90085bf6c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 16 23:08:30 2023 +0100 Cleanup commit c992226a9c63f80e157d6bd9bf2372acd2a1c795 Author: Michael Skec <mike@skec.site> Date: Thu Nov 9 15:04:19 2023 +1100 Linux: Fix memory leak when inotify init failed This introduces regex_compiled boolean to track whether the regex is compiled successfully. Closes #2229 commit 0bd3e879e1fd8c5ed4562929fb0365a5a7089833 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 16 17:28:17 2023 +0100 Fix unneccessary use of "must" Passing a context-less window to a function that requires a context only emits a harmless GLFW_NO_WINDOW_CONTEXT error. commit 509f4131bec5303b04e30617a123e7ce18a95798 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Nov 15 17:55:07 2023 +0100 Win32: Fix glfwWaitEventsTimeout ignoring messages The bitmask passed to MsgWaitForMultipleObjects was missing QS_SENDMESSAGE, causing glfwWaitEventsTimeout not to return when the thread received messages sent from other threads. Fixes #2408 commit 01d7c331fddd5d027f7d85c651c6473b18d0ea37 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Aug 3 18:10:24 2023 +0200 Wayland: Fix zero being used in place of NULL commit 938a3c29b2e1b93a681cfde82876dfce97635658 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 19 17:40:22 2023 +0200 Update Doxyfile template for Doxygen 1.9.7 commit 3ed6e9d89aa518b44ab30e598e5b813879eda71c Author: Doug Binks <doug@enkisoftware.com> Date: Wed Nov 15 17:48:30 2023 +0100 Updated credit commit 9a80225ddfdaf9457c80c97ce4c12aed3377dd24 Author: Doug Binks <doug@enkisoftware.com> Date: Wed Nov 15 16:48:19 2023 +0100 Add credits Related to #2386 and #2420 commit 46c2e35c554d96fdb8a94c3f19c88e34a613532a Author: Doug Binks <doug@enkisoftware.com> Date: Wed Nov 15 16:44:24 2023 +0100 Updated changelog commit 93a3ba808067134b5a964b1a1c44701450386fe4 Author: moritz-h <7849248+moritz-h@users.noreply.github.com> Date: Wed Nov 15 16:37:46 2023 +0100 Win32: Add library name suffix to pkg-config file Closes #2386 commit 3eaf1255b29fdf5c2895856c7be7d7185ef2b241 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Apr 25 22:59:25 2023 +0200 Wayland: Cleanup Update naming and declarations to current standard. commit 6b48f2be97057cf436c6eb3059bbbfdcb5f66d7c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Apr 25 22:53:17 2023 +0200 Wayland: Merge function called once This brings together the two halves of the cursor setting logic for the fallback decorations. commit 00a663dafd3bc214181a2987af1f5dac81e3b053 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Apr 25 22:47:18 2023 +0200 Wayland: Fix fallback decorations emitting errors A GLFW_CURSOR_UNAVAILABLE error would be emitted each time the cursor moved over the fallback decorations if the standard cursor shape appropriate for that part was missing on the system. These errors served no useful purpose and have been removed. commit 3fa2360720eeba1964df3c0ecf4b5df8648a8e52 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Mar 31 15:30:20 2023 +0200 Update changelog Related to #2198 commit 0b94e1b29b5be16fc0979de8ac107e93ae440419 Author: TheBrokenRail <connor24nolan@live.com> Date: Fri Oct 7 21:26:21 2022 -0400 Wayland: Fix detection of joysticks after init Closes #2198 commit f27daa34ada52c67bf2f258e1135254dc4fa5b34 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jan 26 18:18:14 2023 +0100 Fix glfwinfo output of Vulkan layer spec version commit 6f2d7064be3bcc57c46a319898dc618ee121c2fb Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jan 20 06:50:52 2023 +0100 Make glfwinfo try Vulkan even if GL/GLES fails commit 9cce2896eeaa8e74a902b11caaeb64ae666efaf7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun May 22 16:50:15 2022 +0200 Null: Add (fictional) scancodes This replaces the previous scheme where scancodes were equal to keycodes (an implausible and potentially misleading situation) with a set of scancodes invented purely for the null platform. commit 23ab9727247534dc2a27505a0da8efff5384f5ef Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Mar 28 17:29:33 2023 +0200 Fix unquoted CMake variable references The previous version did not handle paths containing whitespace correctly. Related to #2256 commit fbdb53b9ca457ab01675e20d9127cb62d8db88b8 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 27 14:37:27 2022 +0100 Wayland: Add initial support for libdecor This is partly based on the implementation of libdecor support in PR #1693 by @ christianrauch. Where available, the libdecor library is loaded at init and becomes the preferred method for window decorations. On compositors that support XDG decorations, libdecor in turn uses those. If not, libdecor has a plug-in archtecture and may load additional libraries to either use compositor-specific decorations or draw its own. If necessary, support for libdecor can be disabled with the GLFW_WAYLAND_LIBDECOR init hint. This is mostly in case some part of the dynamic loading or duplication of header material added here turns out to cause problems with future versions of libdecor-0.so.0. Fixes #1639 Closes #1693 Related to #1725 commit cd466cf9fd741a9ff704ce773f12dbfee8713640 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Dec 28 16:40:00 2022 +0100 Wayland: Simplify decoration side detection This commit simplifies the detection of which element of a fallback decorated window the pointer has entered. Instead of looping through the list of windows, the user pointer of fallback decoration surfaces is set to the GLFW window object. commit 39f0e8622898f9533f43aa805ac0667945c1c26e Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Dec 1 13:10:07 2022 +0100 Wayland: Clean up enum value names commit efa9297a41fb88b1c34ea3835d16463607e7a9a7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Nov 8 20:33:29 2022 +0100 Wayland: Simplify per-window ouput scales tracking This replaces (one case of) manual management of weak links between windows and monitors, both objects with complex life times, with wl_object pointers used as opaque key values. commit 91c837ace563cb2bf188dc8ac8e0ae60f616ffe3 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 3 21:51:29 2022 +0100 Wayland: Use tags to verify proxy ownership This is in preparation for adding support for libdecor, which creates its own proxies on our display. It will likely also be helpful to some people using native access on Wayland. This is partly based on the implementation of libdecor support in PR #1693 by @ christianrauch. commit 6d9083af03d04996829b02316770ad755fb6252c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 3 20:58:15 2022 +0100 Wayland: Remove duplicate setting of user data The surface user data is already set by wl_surface_add_listener. commit 4cf510511ca067af7c028c98b2cb90695199052f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Nov 3 20:54:32 2022 +0100 Wayland: Stop manually tracking interface versions This is already tracked by the proxies we care about. commit c1a79c1c41456a6fb0d2490a449eb4b2e0144302 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jan 8 22:13:45 2023 +0100 Wayland: Emit size event when setting aspect ratio commit 8397b39afa30df18eeec0453acca3510fe160dd7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jan 8 22:12:56 2023 +0100 Wayland: Fix some missing window refresh events commit 735fc101f5f690370b8943116e183b5b032356e3 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 20 18:34:08 2022 +0100 Wayland: Fix decorations not always being created If a window was initially fullscreen then it would not get an XDG decoration object. If the window was later switched to windowed mode it would then get fallback decorations instead of XDG ones. commit 228428fa4f0a6efc0504f03c0b7f12d8a997a6f7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Dec 28 23:35:06 2022 +0100 Wayland: Simplify test for fallback decorations The GLFW fallback decorations only exist when the window is visible, decorated and in windowed mode. commit 82e77dbff4a6695fb8ed3f3e9ed58c4814dd62b4 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jan 8 16:53:21 2023 +0100 Wayland: Pick more plausible default cursor size This is not intended as a replacement for actually querying the desktop for the correct size, but it appears to be a better fallback value. commit 9a87635686c7fcb63ca63149c5b179b85a53a725 Author: Juan Ramos <gitlab@jpr.mozmail.com> Date: Sat Jan 21 11:18:35 2023 -0700 Update to actions/checkout@v3 Fixes the following CI warning: "Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2..." Closes #2255 commit 2b580012da0dc11b60fdaf46ae7310e4b6e51c30 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Mar 3 14:46:43 2023 +0100 Add credit Related to #2199 commit 5c463a9070a5d9df5a3ac5465e6b5807abcaef67 Author: Yoshinori Sano <yoshinori.sano@gmail.com> Date: Mon Oct 10 09:18:25 2022 +0900 Win32: Fix typo in error description Closes #2199 commit 9b1f63bad99e584ac961769bd1ae157613cdaef4 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Mar 2 17:47:36 2023 +0100 Add credit Closes #2256 commit 1c9fcdc9df3c479cc7adab369df20e10ea179418 Author: Juan Ramos <gitlab@jpr.mozmail.com> Date: Sat Jan 21 11:33:41 2023 -0700 Simplify setting of GLFW_STANDALONE CMake variable Use string(COMPARE EQUAL ...) instead of a whole if() statement. Related to #2256 commit 30b91c8b60a29d2c921bee494542b980710b59a7 Author: Juan Ramos <gitlab@jpr.mozmail.com> Date: Sat Jan 21 11:30:56 2023 -0700 Remove CMAKE_LEGACY_CYGWIN_WIN32 CMake option This was needed for compatibility with CMake versions before 2.8.4. Related to #2256 commit e0ae1c45df35c6068c9219006e09a24de216bfa3 Author: Juan Ramos <gitlab@jpr.mozmail.com> Date: Sat Jan 21 11:30:13 2023 -0700 Remove setting of CMake policy CMP0054 This policy is already set to NEW by requiring CMake 3.4. Related to #2256 commit 8f470597d625ae28758c16b4293dd42d63e8a83a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jan 26 18:41:46 2023 +0100 Add support for manually running build workflow commit 57cbded0760a50b9039ee0cb3f3c14f60145567c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Dec 16 13:44:59 2022 +0100 Add credit Related to #2225 commit 41d8da1cea55732867b5c3a7159215071b87b790 Author: Takuro Ashie <ashie@clear-code.com> Date: Fri Dec 16 21:40:36 2022 +0900 Wayland: Fix wrong array size for _GLFWofferWayland Closes #2225 commit 00967cbb8a4a51ea8ff6f8b8a7efcf1f761cc664 Author: TheBrokenRail <17478432+TheBrokenRail@users.noreply.github.com> Date: Thu Dec 15 14:18:59 2022 -0500 Linux: Fix joystick input being disabled Closes #2192 commit dd8a678a66f1967372e5a5e3deac41ebf65ee127 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Sep 20 17:40:36 2022 +0200 Update Doxyfile template for Doxygen 1.9.5 This is mostly to disable Doxygen HTML output dark mode (for now). commit 97b9e49637d14b625eeb6fd400a5e0e673b66e7d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Sep 20 17:03:30 2022 +0200 Documentation work commit b2b087cd8e9521746563acfdb8b9ea3e7d91f09a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Sep 20 16:17:22 2022 +0200 Fix documented errors for gamma ramp functions Fixes #2186 commit d299d9f78857e921b66bdab42c7ea27fe2e31810 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Sep 13 22:01:38 2022 +0200 Remove Doxyfile tags deprecated by Doxygen 1.9.5 commit ed1d9e1ca75600d80f9956bc3de333987a777cfa Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Sep 9 17:35:48 2022 +0200 Document X11 WM_CLASS hint behavior Fixes #2180 commit ab3ea8ac9f1b3dbe6aaf2e830d35e93c30657064 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Apr 21 19:26:05 2022 +0200 Win32: Remove unhelpful helper function commit c812b9d87cb4afaae44ca7e9e6f40ddd35cce44f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Nov 9 19:44:00 2021 +0100 Add conditional compilation for platform units This is a step towards being able to compile GLFW manually without needing to duplicate a lot of platform- or OS-specific logic. commit 8a72918bcd2bac52ce733c4a973209afb9a5020a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Sep 4 22:24:12 2022 +0200 Move helper macros to single point of use commit ab1b1edfd08352da95e84118b1c91bf612117f56 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Aug 26 19:08:18 2022 +0200 EGL: Cleanup Both config parameters are "desired", but one is older and never had its name updated. This commit at least makes it clearer that they are similar. commit 93e93135f22c27a0120c5b0c7f2242901c8b1b52 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Aug 26 19:00:08 2022 +0200 EGL: Add better error for no stereo commit e0576666426ff321414f54aefc7583cf457865fc Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Aug 26 18:16:29 2022 +0200 EGL: Add better errors for client API mismatch Because EGL ties client API support to configs, attempts to create a context with an unavailable client API will fail with the unhelpful "failed to find suitable config" error description. This attempts to detect cases where there are usable configs for the other client API and emit a hopefully more helpful error. Related to #2173 commit 6b57e08bb0078c9834889eab871bac2368198c15 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Aug 15 23:29:10 2022 +0200 Check if context creation APIs match when sharing commit 2c0f34b60f7c7a07183ed71754b0156ece3b6c1b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Apr 24 22:31:28 2022 +0200 WGL: Fix count of displayable pixel formats We only care about displayable pixel formats (as defined in WGL_ARB_pixel_format) for window context creation. This changes pixel format enumeration to ignore non-displayable formats, which are specified to be listed after displayable ones, by always using the return value of DescribePixelFormat as the pixel format count. commit ef6c9d8b4f957c2a53374558e393bdb5c4264fa5 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jul 25 20:33:47 2022 +0200 Wayland: Fix window opacity on older systems On systems lacking the EGL_EXT_present_opaque extension, some compositors treat any buffer with an alpha channel as per-pixel transparent. This commit ignores any EGLConfig with an alpha channel if the extension is missing and the window is created with GLFW_TRANSPARENT_FRAMEBUFFER set to false. This is technically not a breaking change since GLFW_ALPHA_BITS is not a hard constraint, but it is still going to inconvenience anyone using the framebuffer alpa channel to store other kinds of data. Related to #1895 commit c18851f52ec9704eb06464058a600845ec1eada1 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 27 15:05:23 2022 +0200 GLX: Add support for loading glvnd libGLX commit 55aad3c37b67f17279378db52da0a3ab81bbf26d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 27 15:03:16 2022 +0200 EGL: Add support for loading glvnd libOpenGL commit 0f9a9578f38518317d0b3305dd816ba7b400972d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Oct 26 14:25:03 2021 +0200 Add window hints for initial position This adds window hints for the initial position, in screen coordinates, of a window. The special value GLFW_ANY_POSITION means the window manager will be allowed to position the window. It is not possible to set window positions on Wayland and GLFW will always behave as if these hints are set to GLFW_ANY_POSITION. Fixes #1603 Fixes #1747 commit 7d73629e5071b0baea87135f01a4335b10740068 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Oct 26 20:30:29 2021 +0200 X11: Preserve unrelated values in WM_NORMAL_HINTS This stops GLFW overwriting the whole WM_NORMAL_HINTS property every time it updates size-related parts of it. commit 2efc598d70be92267a97c95ac08668565784ab19 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jul 26 19:21:07 2022 +0200 Fix native access macros being mutually exclusive The documentation was updated with the introduction of run-time platform selection, but the preprocessor logic was not. commit 2e12ef00bb4b96c7b4c6ea14f594cc8f50ea718f Author: TheChocolateOre <50585073+TheChocolateOre@users.noreply.github.com> Date: Thu Jul 28 16:56:18 2022 +0300 Fix typos and other issues in docs This fixes spelling, grammar and punctuation issues, missing words and stray words across the documentation. A confusing sentence was removed from the tutorial. Closes #2085 commit 3a60992a418aad88717db32353bec22e8bb7dab3 Author: Camilla Löwy <elmindreda@glfw.org> Date: Mon Jul 25 16:30:11 2022 +0200 Wayland: Add error for unsupported feature commit 3a5c726d1bd485e63219c2a6c3e377f434d6ee10 Author: Camilla Löwy <elmindreda@glfw.org> Date: Mon Jul 25 16:28:23 2022 +0200 Wayland: Remove unreachable code This platform function is only called if the cursor is enabled. commit 7be6a2cabec3a50419448cc618792d2949d988fd Author: Camilla Löwy <elmindreda@glfw.org> Date: Mon Jul 25 13:04:21 2022 +0200 Wayland: Clean up pointer helper function order commit 488008e0a22d10c337ef6e910b57a52cecb6bb46 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Dec 3 17:58:20 2019 +0100 Add cursor mode GLFW_CURSOR_CAPTURED This adds a cursor mode that provides a visible cursor confined to the content area of the window. Fixes #58 commit a46f829de8d90d6932a696fd397479042ec1071d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jul 8 14:45:31 2019 +0200 Refactor cursor mode paths This is the refactoring part of adding GLFW_CURSOR_CAPTURED, separated out to help keep 3.3-stable similar to the main branch. Related to #58. commit 03af6b3d4c2dbd763fbf32927c44fe6fd517991c Author: Camilla Löwy <elmindreda@glfw.org> Date: Mon Jul 25 17:40:22 2022 +0200 Wayland: Fix leaks of pointer related objects commit 09ebf3f0bfe5a5e819fd51f0995ca928b27185bd Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jul 24 22:28:32 2022 +0200 Wayland: Fix error for missing protocol A protocol not being available is not a platform error. The platform is doing fine; we're just sad that it lacks a feature we want. commit e85b645b8adbbc565c9e9fccbf474705f453d1c1 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jul 24 22:27:22 2022 +0200 Wayland: Clean up pointer locking Shorten names and allow C99 declarations. Replace helper function with the NULL check it was hiding. Separate cursor hiding from pointer locking. commit b9ed25d2e991944acb51dedc63f3fe68e24c02c9 Author: Michael Pennington <michaeldanielpennington@gmail.com> Date: Thu May 26 20:33:28 2022 -0400 Wayland: Add GLFW_WAYLAND_APP_ID window hint This adds a window hint string for the xdg_toplevel::app_id, which is used by desktop environments to connect windows with application icons and other information. This is similar to the WM_CLASS property on X11. A few very minor fixes were done by @elmindreda during merge. Fixes #2121 Closes #2122 commit 26b85215c07a32f860326bf02ef68f31c5e30837 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jul 14 11:52:55 2022 +0200 Wayland: Static function more static when static commit 6987294df91d9b9be03a796174863cb9d1a06d62 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 15 13:30:14 2022 +0200 Wayland: Clean up cursor theme loading commit 71be34a6c30825aef502b652c86cc31fdcbb5457 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 15 13:12:58 2022 +0200 Wayland: Fix crash if mouse connected after init The cursor theme was only loaded if the chosen seat had a mouse (wl_pointer) during initialization. If a mouse was connected only after glfwInit, there would be no cursor theme but the rest of the cursor related code assumed one had already been loaded. This also moves the details of cursor theme loading out into a separate function to declutter platform init. Because the original cursor theme loading code checked whether we got a wl_shm, and because the rest of the code just assumes we have a wl_shm, initialization will now fail if there isn't one. Fixes #1450 commit 7cc8b053b81ecbb32c013d47b8554c0ed116c820 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 15 12:50:18 2022 +0200 Wayland: Clean up shared memory buffer creation commit 91a96ed4343944add92bc02619319bb9ae9379fd Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 15 15:54:35 2022 +0200 Update changelog and add credit Related to #2042 Related to #2043 commit c424fe55892e7ac7c849989b9ab5e143825fdd4e Author: Björn Hempel <heliflieger@users.noreply.github.com> Date: Sun Feb 6 13:32:10 2022 +0100 Linux: Fix joystick without buttons being ignored Joysticks in Linux without buttons were ignored by device enumeration. Remove the mandatory button attribute from detection. Fixes #2042 Closes #2043 commit c50d53160fa9b579dda0d0a4f9a7c2512940df8e Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 21:46:14 2022 +0200 Make events test window appear on Wayland commit 40b5a8a37cb4770ff5d307beb660fadc64be1265 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 12:54:24 2022 +0200 Wayland: Fix reappearing key repeat If the key or character callback performs actions that indirectly updates the key repeat timer, those changes would be undone once the key callback returned. This fixes the order of operations so that key repeat is fully set up before the key related events are emitted. commit 9180923ea08d70d15a287b49a06ffbecd781a060 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 21:32:30 2022 +0200 Wayland: Clean up key repeat logic commit a1a73ee86257a62818b010cd3de55e10d7ce7105 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 20:33:30 2022 +0200 Wayland: Make text input logic static Since the seat listener was moved into wl_window.c there is no reason for text input to have external linkage. commit e47cb7c1e20f20b8f7d091e477be3fe41201836e Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 20:13:01 2022 +0200 Wayland: Update state before emitting events commit 4df24735ef6bb644830ecdacf89dd04cd8547b86 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 14:26:25 2022 +0200 Wayland: Do not emit events for destroyed window During platform window destruction, all of its callbacks have already been removed, so emitting events for it does nothing. commit d77aaa770f97cd22b16cb4c8b9a3b9aaf33da245 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 13 12:53:25 2022 +0200 Wayland: Fix non-standard struct initialization commit aa80d24d01d150e26d664ff2d5da22e95db6bb82 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 28 23:19:30 2022 +0200 Documentation work Fixes #1596 commit fd7e737216dfdcecd4522b7d8c8dd2439d3dac3b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jul 12 11:44:37 2022 +0200 Linux: Fix duplicate joystick objects This fixes a regression introduced by 2c204ab52ecaa51bfd32b777aef715dae937f009. This broke the check for whether there is already a GLFW joystick object for a given input device, making it always fail. commit 6dd526fb1a9c16c3170a0ebd2b5c73e4a2719245 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 28 22:26:39 2022 +0200 Win32: Fix right Shift scancode when using CJK IME Fixes #2050 commit 2796e61af7b4d0c5f2380c3e1803e21ac1089029 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 24 19:29:29 2022 +0200 Documentation work commit 88a39006e3407656a7ca33d23f8045c6aca43008 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 23:19:40 2022 +0200 Wayland: Cleanup commit 5c948a6e6e52eb89e11d1a424bbf578bfc573319 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 23:12:31 2022 +0200 Wayland: Fix comment typo commit 8e725338bf210b9cc53f6b874307080e16368802 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jul 11 20:54:03 2022 +0200 Add credit Related to #2150 commit 060631c9658010945c6b89935e5ac41a5b4a991c Author: JoelNiemela <joel@niemela.se> Date: Fri Jul 8 18:52:54 2022 -0500 Fix typos in docs Closes #2150 commit 36f0bf00a92b15e301bb28e840a4361e0b74b123 Author: Camilla Löwy <elmindreda@glfw.org> Date: Fri Jul 8 15:51:07 2022 +0200 Cocoa: Fix build failure on OS X 10.11 The NSWindowCollectionBehaviorFullScreenNone enum value is missing from system headers on 10.11 despite the documentation claiming it was added in 10.7. Unfortunately Apple has taken down all API release notes for versions prior to 10.14. This fixes a build failure introduced with 98d6e8485b327288f5b53e59e6cc2267e28376bd. commit 84e165ef64ce117c5f1fa99b607f5bd143973e65 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 8 00:19:03 2022 +0200 Win32: Work around warnings on MSVC 19.32.x commit 2db528d8cddcebc4c96fdac0c6a2d72792578004 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jul 7 22:48:03 2022 +0200 Cocoa: Cleanup commit 78b19548d9395898ecca6b792a37125520f93f5c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jul 7 20:26:37 2022 +0200 Documentation work Related to #2113 Related to #2120 commit dfb26023fca8d7cdd24bf43003109b89acea6869 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jul 7 20:01:28 2022 +0200 Update changelog and add credit Related to #2113 Related to #2120 commit 9b7713cf92582cf56c4f79116001c33d1e6e655f Author: Nikita Fediuchin <cfnptr@gmail.com> Date: Thu May 26 09:27:39 2022 +0300 Cocoa: Fix search path for private Vulkan loader According to both Apple and LunarG, a private copy of the macOS Vulkan loader libvulkan.1.dylib should be placed in the Frameworks directory of the bundle and not its main executable directory. This commit updates the dynamic loading path accordingly. Fixes #2113 Closes #2120 commit 3b3d58df47166865494c29cf3aeb826d1dd29777 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jul 6 23:07:20 2022 +0200 Add support for VK_KHR_portability_enumeration The use of this extension is required to enable the MoltenVK physical device as of Vulkan SDK 1.3.216.0. This is because MoltenVK is still very (very) slightly non-conformant. commit 510a08cde210d133fed1da21dd080072d92ee04a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jul 7 22:55:27 2022 +0200 Update glad to include Vulkan 1.3 Also add the VK_KHR_portability_enumeration extension, which will be needed on macOS. commit 0d599026d04ddcc2695ae938fc1864523dab7a34 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jul 1 18:19:19 2022 +0200 Cocoa: Fix clearing of unrelated window style bits Whenever GLFW changed the window style mask, a new mask was created from scratch based on the attributes set on the GLFW window object. This caused us to potentially clear unrelated window style bits. This was always wrong but became a critical issue when Cocoa began throwing an exception if an application cleared the NSWindowStyleMaskFullScreen while the window is in macOS fullscreen. This commit reworks all style mask editing so it only changes the relevant bits, preserving all others. This is only a narrow bug fix to prevent crashes, intended for the stable branch. Our interaction with macOS fullscreen is still very poor. The next step after this is a set of patches that improve the interaction between the current API and macOS fullscreen. Fixes #1886 Fixes #2110 commit 6f8ec4075be53b17c08cfe4f83f02157cc7bcc12 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 30 22:08:52 2022 +0200 Cocoa: Fix GLFW_MAXIMIZED for nonresizable windows The reasoning here is that glfwRestoreWindow will change nothing for a windowed non-resizable window on Cocoa, and silently refusing to maximize seems slightly more like something other platforms would do. This is possibly either the right thing to do or the wrong one. commit 98d6e8485b327288f5b53e59e6cc2267e28376bd Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 30 21:11:10 2022 +0200 Cocoa: Disable macOS fullscreen when non-resizable Windows with GLFW_RESIZABLE set to false should not be resizable by the user. commit da6713cd096a40a4512f468b34c189017e73f987 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 20:50:48 2022 +0200 Wayland: Do not decorate fullscreen windows If a fullscreen window with GLFW_DECORATED set had its XDG decorations changed to client mode by the compositor, it would seemingly receive GLFW fallback decorations as if it was windowed mode. This is possibly related to #2001. commit d578c2ddfeb6a31c532ddc29de289762745548d2 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 19:52:39 2022 +0200 Wayland: Only create EGL window if using EGL commit 74b4ceb8354bbe3eb4d225bcc07c4ed4023ca1f2 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 19:48:28 2022 +0200 Wayland: Cleanup This moves what is effectively showing the window to where that is done on other platforms, i.e. last in the platform CreateWindow function. commit c4fbe80d90ac7f4bd2fc0f02afccdc4d45489cbf Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 19:37:35 2022 +0200 Wayland: Make function behavior match name The logic that checks the decorated attribute belongs on the outside along with other related checks (fullscreen, monitor, decoration mode). commit be7f4513c05a45e6252f940408e139741a462986 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 17:37:37 2022 +0200 Wayland: Remove premature surface commit calls Note that the handling of configure events, acks and commits is still not ideal. This is just a small step in, hopefully, a good direction. Fullscreen toggling via glfwSetWindowMonitor now works on Weston, but mostly incidentally. commit 47193f15de529b6e7c182168b1c17f29bda9de4b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 21 15:23:32 2022 +0200 Wayland: Rename function to its purpose commit 80dc0533cf7234517328537a54b7675f0588713c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 22:57:18 2022 +0200 Wayland: Use enum type to store enum value commit 29b7669bc6a42de729a59abc96ce8849654751c7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 22:48:35 2022 +0200 Wayland: Fix transition to server-side decorations commit f35e2274cbf253b659e9847354fe72d7b45dcc9a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 22:36:23 2022 +0200 Wayland: Fix GLFW_DECORATED for XDG decorations On a compositor that supports server-side decorations, they were always enabled in windowed mode, even if GLFW_DECORATED was cleared. commit 3203599cac774c4aa48dc17eb963f4a90c6d70ff Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 22:21:41 2022 +0200 Wayland: Fix map before XDG decoration configure If the xdg_toplevel has a decoration, we need to wait for its first configure event as well before we are allowed to attach the first buffer. It seems racy to assume that this will always happen inside the first surface configure sequence, so this commit makes that condition explicit. This may turn out to have been overly defensive. commit 2df0ce07faead09b1d305d30cf68d95c1145c37c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 22:20:56 2022 +0200 Wayland: Store and act on XDG decoration mode Refer to the XDG decoration mode (or the lack of one) directly instead of setting a boolean in a struct meant for the fallback decorations. This makes things a bit more verbose but is in preparation for a refactoring of all decoration paths. commit 83a134a92fa8642fe50c6e9b2400044e442d038a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 00:43:24 2022 +0200 Wayland: Fix mapping failure on wlroots compositor When showing a window that had already been shown once (and so already had its shell objects), GLFW would attach a new buffer and commit it before waiting for the next configure event. This was a violation of the XDG shell protocol. This was allowed to work as intended on GNOME and KDE without error. However wlroots based compositors would (correctly) emit an error. Unfortunately, I haven't been able to find a way to get both KDE, GNOME and Sway to send the configure event we need in order to map the wl_surface again while keeping our existing shell objects, so with this commit we now create them for each call to glfwShowWindow and destroy them for each call to glfwHideWindow. Fixes #1268 commit eb9c3bee71edd2f72cf212105cb8a9ff5c77a673 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 20 00:27:04 2022 +0200 Wayland: Rename fallback decoration functions We are soon going to have three kinds of decorations; XDG, libdecor and our last resort fallback ones. commit 0cd1916de39b67878ae178f211921e5606c4485d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 20:16:40 2022 +0200 Wayland: Remove function only called once commit 77819c0c549fa9c1aa40ff74289bd7cfae61f296 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 18:20:16 2022 +0200 Wayland: Fix maximized state lost while hidden If a window was created as maximized, or created as hidden and then iconified or maximized before first being shown, that state was lost and the window was shown as restored. commit e52046955d551a1a07bd213f5ada657f83a49fcb Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 14:41:46 2022 +0200 Wayland: Cleanup commit 55fcfb1bb642485b1c14fa8e20388fa2ac9fb8c0 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 14:39:30 2022 +0200 Wayland: Fix error for setting GLFW_FLOATING commit 203002ef2c6a8518138eed981ba1e95cfe59c59c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 14:12:32 2022 +0200 Wayland: Fix latent bug for glfwGetWindowTitle commit 85f5a51912c3329137377cd2ba0f0a7a34887ed7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 15 17:57:54 2022 +0200 Wayland: Fix events emitted before ack_configure Window iconfication and maximization events were being emitted before xdg_surface::configure, making it possible for user code to indirectly commit surface changes from those event callbacks before xdg_surface::ack_configure. This postpones those events until after the ack has been sent. commit 9ad9f5c52a9e89c598d39ffaa918106c1a096e7f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 22:28:05 2022 +0200 Wayland: Fix missing error reporting commit 5002522f7340e2ffb5fae07690b6091cb13ee960 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 22:22:49 2022 +0200 Wayland: Cleanup Make Wayland code use 'native' in the same senses as the rest of GLFW. commit 91f18fb57697c57bf9da64ad546eed5c60518618 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 20:37:31 2022 +0200 Wayland: Fix error from glfwSetWindowAspectRatio The aspect ratio was applied during resize but any call to glfwSetWindowAspectRatio emitted a GLFW_FEATURE_UNIMPLEMENTED error. commit e37ba80b1343f46d1b380fd3b9816e1260d8ee0a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 18:46:47 2022 +0200 Wayland: Fix reporting of monitor scale changes Content scale events would be emitted when a window surface entered or left an output, but not when one of a window's current outputs had its scale changed. commit c3ad3d49ed8b436582a6fbba1c3e64f97087e362 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 18:44:24 2022 +0200 Wayland: Fix duplicate monitor connection events GLFW would report a monitor as connected each time its wl_output received an update, for example if its scale changed. This would also cause the monitor to be added to the monitor array again, causing glfwTerminate to segfault when it attempted to destroy its already destroyed wl_output. commit 209f6cf0935412e067e6595790cf3d3d5866923d Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 18:20:56 2022 +0200 Wayland: Add support for wl_output::name We now use wl_output::name as the GLFW monitor name, on compositors that provide this event. commit 33d37782c6551fe67c553dd077ad7ee79f1b76f4 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue Jun 14 18:12:49 2022 +0200 Wayland: Cleanup commit 229d628ec47073c3778ba2e37c02c8d94140be77 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 13 19:37:34 2022 +0200 Wayland: Fix toggling of server-side decorations This is a temporary local fix to have updates to GLFW_DECORATED mostly work as intended. The whole decoration state machine needs to be restructured, but not by this commit. commit c28d420060a60d579e15afb812d5bd054891179a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Jun 13 15:12:52 2022 +0200 Wayland: Remove duplicate fullscreen check This check is already performed in shared code. commit 18df0baea60ed17d744eb4b714b8b9363776c0cf Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jun 12 23:16:16 2022 +0200 Wayland: Cleanup commit a7b6f355008237c28faad86c2188cc5f132aec64 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jun 12 21:36:26 2022 +0200 Wayland: Fix size limits for fallback decorations The size limits set on our XDG surface did not include the sizes of the fallback decorations on all sides, when in use. This led to its content area being too small. Related to #2127 commit 0f5b095042842006747f8dc04aded64ea3e05d2a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 16 01:36:55 2022 +0200 Wayland: Fix erratic fallback decoration behavior The handler for xdg_toplevel::configure treated the provided size as the content area size when instead it is the size of the bounding rectangle of the wl_surface and all its subsurfaces. This caused the fallback decorations to try positioning themselves outside themselves, causing feedback loops during interactive resizing. Fixes #1991 Fixes #2115 Closes #2127 Related to #1914 commit 24cdc5afda8f36981eb46ae5c8189478774a325f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 16 01:35:59 2022 +0200 Wayland: Rename window frame size constants commit 75295f48781fb2209f4d7cb1a021b299f338996a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jun 12 18:47:30 2022 +0200 Wayland: Remove unused code path commit 040712ce99ea787a85ae68b75fa452ee817274b8 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 18:53:22 2022 +0200 Wayland: Cleanup commit 2877fea550038d73a8d04feb38af6ca4e4c3a5b6 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 18:51:57 2022 +0200 Wayland: Remove superfluous comments These are just repeating parts of the identifier. commit e33db6d7aa2b62072f312bd7b723efecf5b7c9ac Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 18:38:06 2022 +0200 Wayland: Fix resize events before ack_configure The surface was resized and the size event was emitted before we had sent xdg_surface::ack_configure. If user code then called some GLFW function that commited the surface, those changes would all get applied to the wrong configure event. This postpones size changes until after the ack. commit afb127769a5a39246ae80e2489f0d4cf43a32fbb Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 18:36:16 2022 +0200 Wayland: Add tracking of XDG fullscreen state commit ed39ff43f969b54ba4659293dfaf4d6948f07fed Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 15:46:24 2022 +0200 Wayland: Use named constants for version checks The wayland-scanner output provides really nice, self-documenting version macros, so we should use them whenever possible. commit 98c9961f3265c1a926e16ff454274e75eda377f2 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 17 20:16:34 2022 +0200 Wayland: Cleanup commit 3bbb41eacc294d3030303eabfd16f66d452e9a72 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 15:45:07 2022 +0200 Wayland: Fix glfwInit closing stdin on failure If platform initialization failed before either timer fd member had been set to -1 or a valid fd, termination would close stdin. commit 0b76e3a6f158549b96d1ae3424f094c63177b2ce Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 14:19:13 2022 +0200 Wayland: Fix duplicate window content scale events The window content scale event was emitted every time the window content area was resized, even if its scale had not changed. commit 6857995498d6628b3052b547ecd7cdecfee342d6 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 14:10:25 2022 +0200 Wayland: Fix glfwSetWindowSize resizing fs windows glfwSetWindowSize would change the size of fullscreen mode windows as if they were windowed mode. commit fdc72edf8177f74b9565094559ebd0a717af93a0 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Jun 19 18:30:03 2022 +0200 Wayland: Fix missing fullscreen code path glfwRestoreWindow assumed it was only called in windowed mode. commit f39ffefb6a754677305efab556216f99f90c778a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 13:29:24 2022 +0200 Wayland: Fix maximization by user being ignored The internal maximization state was not updated when an event was received that the user had changed the maximization state of a window, and no maximization events were emitted. This affected both the GLFW_MAXIMIZED attribute and glfwRestoreWindow. commit ddd087d6627d19655d78196b5836c1d090b59506 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 9 21:31:44 2022 +0200 Wayland: Fix behavior of leaving full screen mode These changes make GLFW fullscreen more consistent, but unfortunately also make GLFW even more oblivious to user-initiated XDG shell fullscreen changes. Fixes #1995 commit 523fdf50c14210e03434648ee45bade9067fd41c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 16 13:32:31 2022 +0200 Wayland: Cleanup commit d3ede7b6847b66cf30b067214b2b4b126d4c729b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri Jun 10 00:14:05 2022 +0200 Add credit Related to #2108 commit a465c1c32e0754d3de56e01c59a0fef33202f04c Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Fri May 6 17:58:42 2022 +0200 Win32: Simplify window class handling By using window class atoms, we only need to mention each window class name once, also removing the need to define _GLFW_WNDCLASSNAME. It can still be defined by the user as before. commit 2ae3e0c8d7d237523cf7ec8c4ce95a7fdb40114f Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun Mar 27 19:40:35 2022 +0200 Win32: Add separate window class for helper window The current window procedure needs to deal with messages both for user created windows and the hidden helper window. This commit separates out the device message handling of the helper window, allowing both window procedures to be less complicated. commit ad3dbeb65feaba28f1b3df9d5788c35735809f8b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Dec 22 14:14:24 2021 +0100 Add basic assertions for event API arguments commit 05f6c13d119ea2662c97527d2421fb4cffd3dbfc Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Mon Apr 18 23:09:47 2022 +0200 Add support for GLFW_NATIVE_INCLUDE_NONE macro By default, the glfw3native.h header will include the platform-specific headers necessary for the return types of GLFW native access functions. Sometimes it is preferrable to declare those types This commit adds support for the GLFW_NATIVE_INCLUDE_NONE macro, which when defined disables the inclusion of all platform-specific headers. Fixes #1348 commit edec334b32458df9ced9d84a39c3cd4b757597bb Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu Jun 2 21:25:15 2022 +0200 Cocoa: Use system header to declare id type Related to #1348 commit 26920a1a38d7c4c5b7908cf2e04b750d941f1faa Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed May 25 19:43:55 2022 +0200 X11: Fix previous error handler not being restored GLFW did not restore the previous Xlib error handler when removing its own, instead resetting to the default handler. This commit saves and restores the previous error handler. None of this is thread-safe or could ever be. Fixes #2108 commit 736a88b0672a8a616d109da73bef6d1e44eb063b Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Sun May 22 14:40:00 2022 +0200 Fix return type of functions returning bool values commit 2c204ab52ecaa51bfd32b777aef715dae937f009 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu May 5 22:23:12 2022 +0200 Fix joystick user pointer NULL during disconnect The joystick code did not distinguish between the allocation status of the GLFW joystick object and whether it is connection to an OS level joystick object. These are now tracked separately. Fixes #2092 commit e9c58bc1815656403b736000469f2ae5d2f0303a Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Wed Jun 8 19:14:13 2022 +0200 Wayland: Fix missing lock key modifier bits The modifier bits for lock keys were only set when the corresponding key was reported as held down or latched, but not when it was released and locked. commit 62e175ef9fae75335575964c845a302447c012c7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Thu May 5 21:47:34 2022 +0200 Win32: Add comment clarifying use of ToUnicode Fixes #2100 commit ce85c7dcaf48be96870f2d8fec1d78b0b7d744c7 Author: Camilla Löwy <elmindreda@elmindreda.org> Date: Tue May 3 19:54:08 2022 +0200 Fix GLAPIENTRY not being defined for native access This is a follow-up to 535c3ce63240ee91f998219b35dc82abef545c3d. That commit made glfw3native.h undefine GLAPIENTRY whenever GLFW_EXPOSE_NATIVE_GLX or GLFW_EXPOSE_NATIVE_OSMESA was defined, on the assumption that it was glfw3.h that had defined GLAPIENTRY. If gl.h or an extension loader header has been included before glfw3.h, then it has defined inclusion guards preventing GLAPIENTRY from being defined later when the GLX or OSMesa header includes g…
Simple change to support setting app_id on wayland windows, closes #2121 .