Commit graph

267 commits

Author SHA1 Message Date
InKryption
c84f8510bd glfw: Use anyopaque instead of opaque{}
Using an inline `opaque{}` type forces the use of `@typeInfo` to cast to the specific type of the parameter.
2022-01-12 18:58:49 -07:00
InKryption
7cb001e526 glfw: Tidy up UserPointer access
This change both restricts and clarifies the mutability/nullability of the pointers, and replaces the explicitly-typed pointer usage in setUserPointer with ?*anyopaque, since it now, as of being renamed from c_void, more simply communicates the intent of taking any pointer type.
2022-01-02 18:17:27 -07:00
iddev5
5dd918f787 glfw: improve documentation for native.zig
- Added hidden error returns
- Improved return types
- Updated docs to glfw 3.3.6
2021-12-28 03:52:22 -07:00
Ali Chraghi
8f426c56c1 glfw: expose glfwSetErrorCallback for retrieving optional error descriptions 2021-12-25 11:32:12 -07:00
Ali Chraghi
0028045cda add wayland cross-compilation support (#140)
* add wayland-headers include path
* add wayland protocols header to wayland target includes
* move `xkb_unicode.c` to `sources_linux.c`
* glfw: document where wayland generated sources come from
* glfw: update sdk-linux-x86_64 to include Wayland protocol sources

See https://github.com/hexops/sdk-linux-x86_64/pull/2

Co-authored-by: Stephen Gutekanst <stephen@hexops.com>
2021-12-24 01:06:51 -07:00
iddev5
2d738248e7 glfw: Update function docs in Monitor and vulkan to match glfw 3.3.6 2021-12-23 13:01:45 -07:00
iddev5
2d01fce1bc glfw: native.zig: Fix missing casts, incorrect return types and error
handling
2021-12-23 00:57:29 -07:00
iddev5
397a3831ad glfw: Add ziggified API of glfw3native.h 2021-12-23 00:57:29 -07:00
InKryption
7abe88b224 Run zig fmt
>> Zig master changed `c_void` to `anyopaque`, and zig fmt helps to change code as appropriate
2021-12-19 16:15:32 -07:00
Ali Chraghi
7baaa264e4 glfw: replace isize, usize with i32, u32 where appropriate (#126)
Fixes hexops/mach#114
2021-12-14 09:20:14 -07:00
Stephen Gutekanst
a0fc183a20 glfw: reduce compilation units to bring iteration time down to ~90ms
This consistently shaves off about 40ms (~130ms -> ~90ms, 30% reduction) from build times when iterating.

On Windows, I suspect the result will be much greater due to slow filesystem perf there and the fact
that this reduces the # of files read.

This was originally brought to my attention as a possibility by @meshula in hexops/dawn#2, the way this
works is by reducing compilation units so that C headers only need to be read/parsed/interpreted once
rather than once per individual C source file we are compiling.

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-12-10 03:52:41 -08:00
InKryption
99c7bfd63d glfw: rename capture appropriately 2021-12-09 19:42:28 -08:00
InKryption
5bd4631939 glfw: replace `glfw.dont_care as sentinel value
Apply same pattern to other hints which can take on the value of `glfw.dont_care`.
2021-12-09 19:42:28 -08:00
InKryption
7c96b182fb glfw: replace glfw.dont_care as sentinel value
Also change logic inside `Hints.set` to account for this special case
2021-12-09 19:42:28 -08:00
InKryption
5771591626 glfw: remove accidental re-addition of TODO 2021-12-09 19:42:28 -08:00
InKryption
6e445e6b1d glfw: add doc-comment
Add comment for new `glfw.Window.SizeOptional` struct

Co-authored-by: Stephen Gutekanst <stephen.gutekanst@gmail.com>
2021-12-09 19:42:28 -08:00
InKryption
7503214a08 glfw: replace usage of glfw.dont_care as sentinel value for parameters in some glfw.Window functions 2021-12-09 19:42:28 -08:00
InKryption
89b3f7823c glfw: remove TODOs 2021-12-08 19:30:01 -08:00
Stephen Gutekanst
8e76a927a5 glfw: correctly @errorSetCast when returning errors from createWindowSurface
Fixes an issue where `createWindowSurface` would not compile (found when
updating https://github.com/hexops/mach-glfw-vulkan-example to latest.)

Introduced in hexops/mach#115

cc @InKryption

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-12-06 22:16:06 -07:00
InKryption
1b57fb13fb glfw: Denormalize errors (#115)
Closes hexops/mach#96

Co-authored-by: Stephen Gutekanst <stephen@hexops.com>
2021-12-06 21:52:15 -07:00
BratishkaErik
1667cbb8ff glfw: update system_sdk.zig to latest Zig master 2021-12-06 20:03:38 -08:00
Stephen Gutekanst
4d75871f40 glfw: make getProcAddress ABI compatible with C implementation
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-12-05 04:22:21 +00:00
InKryption
58e2632a4e glfw: Fix pointer cast
The GLFW implementation takes a constant pointer to a `VkAllocationCallbacks` struct; casting it to a mutable pointer equivalent here doesn't break anything, but does prevent passing a valid const pointer, which is often what one should prefer to do.
As well, the `@alignOf` builtin takes the alignment expected of the type directly, so `@alignOf(*T)` returns the alignment of `*T`, not `T`, so that has also been corrected.
2021-11-29 12:52:46 -07:00
Stephen Gutekanst
95515eaf7c glfw: update system_sdk to match latest Zig master macOS version targeting
The latest Zig master supports specifying a specific macOS version for libc, via
the target triple (ziglang/zig#10215):

* x86_64-macos.10 (Catalina)
* x86_64-macos.11 (Big Sur)
* x86_64-macos.12 (Monterey)
* aarch64-macos.11 (Big Sur)
* aarch64-macos.12 (Monterey)

Mach's `system_sdk.zig` can now download the relevant XCode framework stubs
for Big Sur (11) and Monterey (12). Although we don't have an SDK for Catalina (10)
currently, we use the Big Sur (11) SDK in that case and it generally works fine.
By default, Zig targets the N-3 version (e.g. `x86_64-macos` defaults to `x86_64-macos.10`).

Targeting the minimum supported version is useful for compatability, it guarantees the produced
binary will run on any later macOS version. Targeting the newer version can be useful if you
wish to use newer APIs not available in previous versions.

Fixes hexops/mach#102

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-11-27 00:15:15 -07:00
InKryption
fcdc184167 glfw: un-hardcode constant
Make the constant extracted from GLFW source into `time.setTime`, into a better-documented set of comptime instructions
2021-11-26 22:13:47 -07:00
InKryption
9ec72fdb2c glfw: Eliminate Error.InvalidValue 2021-11-26 20:50:38 -07:00
InKryption
7c924700c4 glfw: run zig fmt 2021-11-24 05:14:48 -07:00
InKryption
403e1cc866 glfw: add runtime assertion to Window.setInputMode
Assertion to ensure that the value of 'mode' matches the type of 'value'
2021-11-24 05:14:48 -07:00
InKryption
2822b2862e glfw: Finalize removal of 'InvalidEnum' error 2021-11-24 05:14:48 -07:00
InKryption
23b662f438 glfw: Eliminate InvalidEnum 2021-11-24 05:14:48 -07:00
InKryption
4faa7783e6 glfw: add 'assertInitialized' 2021-11-23 12:12:55 -07:00
InKryption
11a3689cb7 glfw: make comment into doc comment 2021-11-23 12:12:55 -07:00
InKryption
6fbbba7c4c glfw: update possible errors comment
Add 'FormatUnavailable' as a possible error to the 'getClipboardString' comment, which can set it on wayland
2021-11-23 11:07:14 -07:00
InKryption
1f6b5258dc glfw: re-instate prong
Bring back the 'c.GLFW_NOT_INITIALIZED' prong in 'convertError', such that if it is ever passed that error code, we can differentiate it from just an invalid input; because it is a valid input, we just guarantee that it won't occur.
2021-11-23 11:06:19 -07:00
InKryption
e363bb0840 glfw: Change error unions into normal returns, in accordance with the new guarantee to never encounter 'GLFW_NOT_INITIALIZED', and update tests 2021-11-22 12:59:11 -07:00
InKryption
f55e083f05 glfw: enum-ify 'Joystick.jid', set 'InvalidEnum' as unreachable, and run zig fmt 2021-11-22 12:59:11 -07:00
InKryption
946c059f10 glfw: amend and update various TODOs pertaining to force-init changes 2021-11-22 12:59:11 -07:00
InKryption
5c93c0fe22 glfw: assert initialized in proc address getter functions 2021-11-22 12:59:11 -07:00
InKryption
e3b00f0a7b glfw: fix for getClipboardString reaching unreachable prong on linux CI 2021-11-22 12:59:11 -07:00
InKryption
c7558b61eb glfw: Revert error denormalization 2021-11-22 12:59:11 -07:00
InKryption
db6b48e9e4 glfw: force init error type work around 2021-11-22 12:59:11 -07:00
InKryption
5466115d4d glfw: Remove 'NotInitialized' error 2021-11-22 12:59:11 -07:00
InKryption
400fba7401 glfw: force init in Window.zig 2021-11-22 12:59:11 -07:00
InKryption
ea757b077f glfw: force init in vulkan.zig 2021-11-22 12:59:11 -07:00
InKryption
e05fe5e490 glfw: force init in time.zig 2021-11-22 12:59:11 -07:00
InKryption
0782243a12 glfw: force init in opengl.zig 2021-11-22 12:59:11 -07:00
InKryption
35c27a1d18 glfw: force init in Monitor.zig 2021-11-22 12:59:11 -07:00
InKryption
de0f8aceb3 glfw: force init in Joystick.zig 2021-11-22 12:59:11 -07:00
InKryption
9658c47018 glfw: force init in key.zig 2021-11-22 12:59:11 -07:00
InKryption
2096bb2056 glfw: force init in main.zig 2021-11-22 12:59:11 -07:00