mirror of
https://github.com/odin-lang/Odin.git
synced 2026-08-29 00:11:34 +00:00
Merge pull request #5816 from jakubtomsu/win32-rawinput-and-barriers
[core:sys/windows] Sync Barriers, macros for buffered rawinput
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user