module Graphics.UI.SDL.Timer (
addTimer,
delay,
getPerformanceCounter,
getPerformanceFrequency,
getTicks,
removeTimer
) where
import Control.Monad.IO.Class
import Data.Word
import Foreign.C.Types
import Foreign.Ptr
import Graphics.UI.SDL.Types
foreign import ccall "SDL.h SDL_AddTimer" addTimer' :: Word32 -> TimerCallback -> Ptr () -> IO TimerID
foreign import ccall "SDL.h SDL_Delay" delay' :: Word32 -> IO ()
foreign import ccall "SDL.h SDL_GetPerformanceCounter" getPerformanceCounter' :: IO Word64
foreign import ccall "SDL.h SDL_GetPerformanceFrequency" getPerformanceFrequency' :: IO Word64
foreign import ccall "SDL.h SDL_GetTicks" getTicks' :: IO Word32
foreign import ccall "SDL.h SDL_RemoveTimer" removeTimer' :: TimerID -> IO Bool
addTimer :: MonadIO m => Word32 -> TimerCallback -> Ptr () -> m TimerID
addTimer v1 v2 v3 = liftIO $ addTimer' v1 v2 v3
delay :: MonadIO m => Word32 -> m ()
delay v1 = liftIO $ delay' v1
getPerformanceCounter :: MonadIO m => m Word64
getPerformanceCounter = liftIO getPerformanceCounter'
getPerformanceFrequency :: MonadIO m => m Word64
getPerformanceFrequency = liftIO getPerformanceFrequency'
getTicks :: MonadIO m => m Word32
getTicks = liftIO getTicks'
removeTimer :: MonadIO m => TimerID -> m Bool
removeTimer v1 = liftIO $ removeTimer' v1