Merge pull request #5816 from jakubtomsu/win32-rawinput-and-barriers

[core:sys/windows] Sync Barriers, macros for buffered rawinput
This commit is contained in:
gingerBill
2026-02-02 10:05:41 +00:00
committed by GitHub
3 changed files with 33 additions and 0 deletions

View File

@@ -225,6 +225,16 @@ foreign kernel32 {
) -> BOOL ---
WaitForSingleObject :: proc(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD ---
WaitForSingleObjectEx :: proc(hHandle: HANDLE, dwMilliseconds: DWORD, bAlterable: BOOL) -> DWORD ---
EnterSynchronizationBarrier :: proc(
lpBarrier: ^SYNCHRONIZATION_BARRIER,
dwFlags: SYNCHRONIZATION_BARRIER_FLAGS,
) -> BOOL ---
InitializeSynchronizationBarrier :: proc(
lpBarrier: ^SYNCHRONIZATION_BARRIER,
lTotalThreads: LONG,
lSpinCount: LONG,
) -> BOOL ---
DeleteSynchronizationBarrier :: proc(lpBarrier: ^SYNCHRONIZATION_BARRIER) -> BOOL ---
Sleep :: proc(dwMilliseconds: DWORD) ---
GetProcessId :: proc(handle: HANDLE) -> DWORD ---
CopyFileW :: proc(

View File

@@ -3017,6 +3017,21 @@ CRITICAL_SECTION :: struct {
SpinCount: ULONG_PTR,
}
SYNCHRONIZATION_BARRIER :: struct {
Reserved1: DWORD,
Reserved2: DWORD,
Reserved3: [2]ULONG_PTR,
Reserved4: DWORD,
Reserved5: DWORD,
}
SYNCHRONIZATION_BARRIER_FLAG :: enum {
SPIN_ONLY = 0,
BLOCK_ONLY = 1,
NO_DELETE = 2,
}
SYNCHRONIZATION_BARRIER_FLAGS :: distinct bit_set[SYNCHRONIZATION_BARRIER_FLAG; DWORD]
REPARSE_MOUNTPOINT_DATA_BUFFER :: struct {
ReparseTag: DWORD,
ReparseDataLength: DWORD,

View File

@@ -412,6 +412,14 @@ MAKEINTRESOURCEW :: #force_inline proc "contextless" (#any_int i: int) -> LPWSTR
return cast(LPWSTR)uintptr(WORD(i))
}
RAWINPUT_ALIGN :: proc(x: uintptr) -> uintptr {
return (x + size_of(uintptr) - 1) & ~uintptr(size_of(uintptr) - 1)
}
NEXTRAWINPUTBLOCK :: proc(ptr: ^RAWINPUT) -> ^RAWINPUT {
return cast(^RAWINPUT)RAWINPUT_ALIGN(uintptr(ptr) + uintptr(ptr.header.dwSize))
}
Monitor_From_Flags :: enum DWORD {
MONITOR_DEFAULTTONULL = 0x00000000, // Returns NULL
MONITOR_DEFAULTTOPRIMARY = 0x00000001, // Returns a handle to the primary display monitor