Working example

This commit is contained in:
2025-12-15 12:37:50 -05:00
commit 4ff4b04f06
165 changed files with 94256 additions and 0 deletions

33
sdl3/sdl3_timer.odin Normal file
View File

@@ -0,0 +1,33 @@
package sdl3
MS_PER_SECOND :: 1000
US_PER_SECOND :: 1000000
NS_PER_SECOND :: 1000000000
NS_PER_MS :: 1000000
NS_PER_US :: 1000
@(require_results) SECONDS_TO_NS :: #force_inline proc "c" (S: Uint64) -> Uint64 { return S * NS_PER_SECOND }
@(require_results) NS_TO_SECONDS :: #force_inline proc "c" (NS: Uint64) -> Uint64 { return NS / NS_PER_SECOND }
@(require_results) MS_TO_NS :: #force_inline proc "c" (MS: Uint64) -> Uint64 { return MS * NS_PER_MS }
@(require_results) NS_TO_MS :: #force_inline proc "c" (NS: Uint64) -> Uint64 { return NS / NS_PER_MS }
@(require_results) US_TO_NS :: #force_inline proc "c" (US: Uint64) -> Uint64 { return US * NS_PER_US }
@(require_results) NS_TO_US :: #force_inline proc "c" (NS: Uint64) -> Uint64 { return NS / NS_PER_US }
TimerID :: distinct Uint32
TimerCallback :: #type proc "c" (userdata: rawptr, timerID: TimerID, interval: Uint32) -> Uint32
NSTimerCallback :: #type proc "c" (userdata: rawptr, timerID: TimerID, interval: Uint64) -> Uint64
@(default_calling_convention="c", link_prefix="SDL_", require_results)
foreign lib {
GetTicks :: proc() -> Uint64 ---
GetTicksNS :: proc() -> Uint64 ---
GetPerformanceCounter :: proc() -> Uint64 ---
GetPerformanceFrequency :: proc() -> Uint64 ---
Delay :: proc(ms: Uint32) ---
DelayNS :: proc(ns: Uint64) ---
DelayPrecise :: proc(ns: Uint64) ---
AddTimer :: proc(interval: Uint32, callback: TimerCallback, userdata: rawptr) -> TimerID ---
AddTimerNS :: proc(interval: Uint64, callback: NSTimerCallback, userdata: rawptr) -> TimerID ---
RemoveTimer :: proc(id: TimerID) -> bool ---
}