Commit Graph

4752 Commits

Author SHA1 Message Date
Doug Binks
1de78b2ff9 Cleanup 2024-01-28 17:24:14 +00:00
Doug Binks
7321b56cad
Reorder credit 2024-01-28 17:18:11 +00:00
Hilderin
c8521b7fda
Win 32: Fix disabled cursor mode when connected over RDP
Fixes #1276
Based on PR #1279 by @Pokechu22

Co-authored-by: Pokechu22 <8334194+Pokechu22@users.noreply.github.com>
2024-01-28 17:08:27 +00:00
Camilla Löwy
8e6c8d7eff Remove reminders to use C89 for some source files
This is part of removing support for VS versions older than VS 2013.
See #2465 for details and feedback.

Related to #2465
2024-01-15 20:17:18 +01:00
Camilla Löwy
ba796ec9c6 Document VS 2013 as minimum VS version
This is part of removing support for VS versions older than VS 2013.
See #2465 for details and feedback.

Related to #2465
2024-01-15 20:17:18 +01:00
Camilla Löwy
d107e497a9 Remove superfluous CMake flag in AppVeyor build
The source directory already defaults to the current directory.
2024-01-15 20:17:18 +01:00
Camilla Löwy
d2058526cc Make VS 2013 the oldest tested VS version
This is part of removing support for VS versions older than VS 2013.
See #2465 for details and feedback.

Related to #2465
2024-01-15 20:17:15 +01:00
Camilla Löwy
cf29ff2b9d Update CODEOWNERS file 2024-01-15 00:31:45 +01:00
Camilla Löwy
8ff8d67560 Set timeout for build GH workflow jobs
This is in order to catch and stop any malfunctioning job.
2024-01-15 00:31:38 +01:00
Camilla Löwy
d2b88cf7ab 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.
2024-01-13 22:13:56 +01:00
Camilla Löwy
200639712b Add initial .editorconfig file 2024-01-13 22:13:56 +01:00
Camilla Löwy
507621977f Win32: Remove unofficial support for VS 2008
Related to #2465
2024-01-13 22:13:56 +01:00
Camilla Löwy
29885c6942 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.
2024-01-13 22:13:56 +01:00
Camilla Löwy
2c3eb75748 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
2024-01-13 22:13:56 +01:00
Camilla Löwy
73948e6c0f 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
2024-01-13 22:13:56 +01:00
Camilla Löwy
5a9ea8f99f Add build- prefix to .gitignore 2024-01-13 22:13:56 +01:00
Camilla Löwy
4e8c4901e9 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 9fdc425931.
2024-01-13 22:13:56 +01:00
Camilla Löwy
d9646631d6 Removed unused header in sharing example 2024-01-13 22:13:56 +01:00
Camilla Löwy
6b39ab0074 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.
2024-01-13 22:13:31 +01:00
Camilla Löwy
40aa77a160 Remove superfluous CMake flag in GH build workflow
The source directory already defaults to the current directory.
2024-01-13 21:04:50 +01:00
Camilla Löwy
9f6da7e7c6 Win32: Fix some of the errors for Null-only on VS
This workaround is needed whenever windows.h is included after glfw3.h.
2024-01-13 21:04:41 +01:00
Camilla Löwy
ab09dc8fb1 Add credit
I lost track of the existing PR #2245 when fixing #2161 with
5e4496cb42.

Closes #2245
2023-12-26 14:47:51 +01:00
Doug Binks
b4c3ef9d0f
Clarify documentation for contributing
Added location of credits, news and guides.
2023-12-24 12:23:23 +00:00
Camilla Löwy
2c1d31009f 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
2023-12-12 18:36:14 +01:00
Camilla Löwy
ea3ea62708 Update changelog and add credit
Related to #2348
2023-12-12 13:47:37 +01:00
lo-v-ol
eeeb56eb23 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
2023-12-12 13:47:37 +01:00
Camilla Löwy
378e5fc814 Fix Markdown formatting for changelog entry 2023-12-12 13:46:48 +01:00
Camilla Löwy
7b152019da Add credit
Related to #2377
Related to #2405
2023-12-11 21:28:48 +01:00
FuzzyQuills
8e9a5d29a8
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 0d599026d0.

Fixes #2377
Closes #2405
2023-12-11 21:25:44 +01:00
Camilla Löwy
46cebb5081 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
2023-12-07 16:51:13 +01:00
Camilla Löwy
68edc66aa4 Add credit
Fixes #2397
2023-12-07 16:01:47 +01:00
Camilla Löwy
ddd92a4fa8 Update changelog and add credit
Related to #2327
2023-12-06 18:34:22 +01:00
Camilla Löwy
5e4496cb42 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
2023-12-06 18:34:22 +01:00
Camilla Löwy
0ede5f58c6 Simplify joystick hat value assertions 2023-12-06 18:34:22 +01:00
Peter Johnson
52405a9d59 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
2023-12-06 18:34:12 +01:00
Camilla Löwy
9959dc69ca 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
2023-12-05 19:10:06 +01:00
Camilla Löwy
557a633b2d Fix list of possible errors for glfwGetKeyName 2023-12-05 18:36:54 +01:00
Camilla Löwy
b1517e5b3e Fix glfwGetKeyName not checking key token is valid 2023-12-05 18:36:54 +01:00
Camilla Löwy
3f31519de8 Clarify documentation for glfwMakeContextCurrent 2023-12-05 18:36:54 +01:00
Camilla Löwy
1b2605dbcd Fix missing new constant in release notes 2023-12-05 18:36:54 +01:00
Camilla Löwy
93d70cb6a8 Add assertions for context function invariants
Related to #2327
2023-12-05 18:36:54 +01:00
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