sdl_timer.odin 888 B

12345678910111213141516171819202122232425
  1. package sdl2
  2. import "core:c"
  3. when ODIN_OS == "windows" { foreign import lib "SDL2.lib" }
  4. when ODIN_OS == "linux" { foreign import lib "system:SDL2" }
  5. when ODIN_OS == "darwin" { foreign import lib "system:SDL2" }
  6. when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" }
  7. TimerCallback :: proc "c" (interval: u32, param: rawptr) -> u32
  8. TimerID :: distinct c.int
  9. TICKS_PASSED :: #force_inline proc "c" (A, B: u32) -> bool {
  10. return bool(i32(B) - i32(A) <= 0)
  11. }
  12. @(default_calling_convention="c", link_prefix="SDL_")
  13. foreign lib {
  14. GetTicks :: proc() -> u32 ---
  15. GetPerformanceCounter :: proc() -> u64 ---
  16. GetPerformanceFrequency :: proc() -> u64 ---
  17. Delay :: proc(ms: u32) ---
  18. AddTimer :: proc(interval: u32, callback: TimerCallback, param: rawptr) -> TimerID ---
  19. RemoveTimer :: proc(id: TimerID) -> bool ---
  20. }