diff --git a/demo/video.rs b/demo/video.rs index 2dbf1e12..3c8db3b1 100644 --- a/demo/video.rs +++ b/demo/video.rs @@ -16,5 +16,6 @@ pub fn main() { renderer.set_draw_color(sdl2::video::RGB(255, 0, 0)); renderer.clear(); renderer.present(); + sdl2::timer::delay(5000); sdl2::quit(); } diff --git a/src/sdl2.rc b/src/sdl2.rc index 2fd9a434..e1a21067 100644 --- a/src/sdl2.rc +++ b/src/sdl2.rc @@ -10,5 +10,6 @@ pub use sdl::*; pub mod rect; pub mod video; +pub mod timer; pub mod render; pub mod sdl; diff --git a/src/timer.rs b/src/timer.rs new file mode 100644 index 00000000..e174aa9f --- /dev/null +++ b/src/timer.rs @@ -0,0 +1,29 @@ +pub mod ll { + + use std::libc::{uint32_t, uint64_t}; + + extern "C" { + //SDL_timer.h + pub fn SDL_GetTicks() -> uint32_t; + pub fn SDL_GetPerformanceCounter() -> uint64_t; + pub fn SDL_GetPerformanceFrequency() -> uint64_t; + pub fn SDL_Delay(ms: uint32_t); + //TODO: Figure out what to do with the timer callback functions + } +} + +pub fn get_ticks() -> uint { + unsafe { ll::SDL_GetTicks() as uint } +} + +pub fn get_performance_counter() -> u64 { + unsafe { ll::SDL_GetPerformanceCounter() } +} + +pub fn get_performance_frequency() -> u64 { + unsafe { ll::SDL_GetPerformanceFrequency() } +} + +pub fn delay(ms: uint) { + unsafe { ll::SDL_Delay(ms as u32) } +}