Commit Graph

4812 Commits

Author SHA1 Message Date
Camilla Löwy
fa0ea5c41f 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
2023-12-05 18:36:54 +01:00
Camilla Löwy
8c5471d6cd Fix return value on error for glfwGetKeyScancode
The documentation says it should be -1, not zero.
2023-12-05 18:36:38 +01:00
Camilla Löwy
fb94e4268b Remove changelog entry
This bug was introduced since the last release and should not be listed.
2023-12-01 12:38:57 +01:00
Camilla Löwy
d097e35743 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.
2023-11-30 18:52:43 +01:00
Camilla Löwy
23e40548b1 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.
2023-11-30 18:52:43 +01:00
Camilla Löwy
9fdc425931 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.
2023-11-30 18:52:12 +01:00
Doug Binks
23ea072c41
Reorder changelog entry 2023-11-27 16:56:58 +00:00
Doug Binks
659d161446
Reorder credit 2023-11-24 17:06:18 +00:00
Grzesiek11
dbe810e403
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.
2023-11-24 17:04:13 +00:00
Camilla Löwy
afd22ebcf3 Add credit
Related to #2403
2023-11-21 21:26:45 +01:00
Scr3amer
97820bc329
Null: Remove duplicated function declaration
The declaration of _glfwRequestWindowAttentionNull was duplicated.

Closes #2403
2023-11-21 20:28:39 +01:00
Camilla Löwy
d9709904fe 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
2023-11-21 17:40:43 +01:00
Camilla Löwy
a87acd8c1f Update changelog and add credit
Related to #2229
2023-11-16 23:08:50 +01:00
Camilla Löwy
2a4dd9c28f Cleanup 2023-11-16 23:08:30 +01:00
Michael Skec
c992226a9c Linux: Fix memory leak when inotify init failed
This introduces regex_compiled boolean to track whether the regex is
compiled successfully.

Closes #2229
2023-11-16 20:49:23 +01:00
Camilla Löwy
0bd3e879e1 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.
2023-11-16 20:49:23 +01:00
Camilla Löwy
509f4131be 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
2023-11-16 20:49:23 +01:00
Camilla Löwy
01d7c331fd Wayland: Fix zero being used in place of NULL 2023-11-16 20:49:23 +01:00
Camilla Löwy
938a3c29b2 Update Doxyfile template for Doxygen 1.9.7 2023-11-16 20:49:23 +01:00
Doug Binks
3ed6e9d89a
Updated credit 2023-11-15 17:48:30 +01:00
Doug Binks
9a80225ddf
Add credits
Related to #2386 and #2420
2023-11-15 16:48:19 +01:00
Doug Binks
46c2e35c55
Updated changelog 2023-11-15 16:44:24 +01:00
moritz-h
93a3ba8080
Win32: Add library name suffix to pkg-config file
Closes #2386
2023-11-15 16:37:46 +01:00
Max Thrun
8fcf59f883 Cocoa: Ignore monitors which are mirroring another
Currently monitors which are mirroring another one are returned by
`glfwGetMonitors` but their `ns.screen` is `NULL`. Some functions like
`glfwGetMonitorContentScale` and `glfwGetMonitorWorkarea` assert that
`ns.screen` is not `NULL`. Since mirrored monitors are logically the
same we should only consider the primary monitor and ignore the
non-primary ones.
2023-11-06 22:13:59 -08:00
Camilla Löwy
3eaf1255b2 Wayland: Cleanup
Update naming and declarations to current standard.
2023-06-01 20:12:56 +02:00
Camilla Löwy
6b48f2be97 Wayland: Merge function called once
This brings together the two halves of the cursor setting logic for the
fallback decorations.
2023-06-01 20:12:22 +02:00
Camilla Löwy
00a663dafd 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.
2023-06-01 20:12:13 +02:00
Camilla Löwy
3fa2360720 Update changelog
Related to #2198
2023-03-31 16:18:46 +02:00
TheBrokenRail
0b94e1b29b Wayland: Fix detection of joysticks after init
Closes #2198
2023-03-31 16:18:46 +02:00
Camilla Löwy
f27daa34ad Fix glfwinfo output of Vulkan layer spec version 2023-03-31 16:18:46 +02:00
Camilla Löwy
6f2d7064be Make glfwinfo try Vulkan even if GL/GLES fails 2023-03-31 16:18:46 +02:00
Camilla Löwy
9cce2896ee 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.
2023-03-31 15:56:01 +02:00
Camilla Löwy
23ab972724 Fix unquoted CMake variable references
The previous version did not handle paths containing whitespace
correctly.

Related to #2256
2023-03-31 15:33:15 +02:00
Camilla Löwy
fbdb53b9ca 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
2023-03-27 22:03:36 +02:00
Camilla Löwy
cd466cf9fd 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.
2023-03-27 22:03:36 +02:00
Camilla Löwy
39f0e86228 Wayland: Clean up enum value names 2023-03-27 22:03:36 +02:00
Camilla Löwy
efa9297a41 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.
2023-03-27 22:03:36 +02:00
Camilla Löwy
91c837ace5 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.
2023-03-27 22:03:36 +02:00
Camilla Löwy
6d9083af03 Wayland: Remove duplicate setting of user data
The surface user data is already set by wl_surface_add_listener.
2023-03-27 22:03:36 +02:00
Camilla Löwy
4cf510511c Wayland: Stop manually tracking interface versions
This is already tracked by the proxies we care about.
2023-03-27 22:03:36 +02:00
Camilla Löwy
c1a79c1c41 Wayland: Emit size event when setting aspect ratio 2023-03-27 22:03:36 +02:00
Camilla Löwy
8397b39afa Wayland: Fix some missing window refresh events 2023-03-27 22:03:36 +02:00
Camilla Löwy
735fc101f5 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.
2023-03-27 22:03:36 +02:00
Camilla Löwy
228428fa4f Wayland: Simplify test for fallback decorations
The GLFW fallback decorations only exist when the window is visible,
decorated and in windowed mode.
2023-03-27 22:03:36 +02:00
Camilla Löwy
82e77dbff4 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.
2023-03-27 22:03:36 +02:00
Juan Ramos
9a87635686 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
2023-03-03 14:47:15 +01:00
Camilla Löwy
2b580012da Add credit
Related to #2199
2023-03-03 14:46:43 +01:00
Yoshinori Sano
5c463a9070 Win32: Fix typo in error description
Closes #2199
2023-03-03 14:36:12 +01:00
Camilla Löwy
9b1f63bad9 Add credit
Closes #2256
2023-03-02 17:47:36 +01:00
Juan Ramos
1c9fcdc9df Simplify setting of GLFW_STANDALONE CMake variable
Use string(COMPARE EQUAL ...) instead of a whole if() statement.

Related to #2256
2023-03-02 17:44:18 +01:00