{-# OPTIONS_HADDOCK hide #-}
module Graphics.UI.Fungen.Timer (
RefreshType(..),
setRefresh
) where
import Graphics.UI.GLUT
import Graphics.UI.GLUT.Input
data RefreshType
= Idle
| Timer Int
setRefresh :: RefreshType -> StillDownHandler -> IO ()
setRefresh :: RefreshType -> IdleCallback -> IdleCallback
setRefresh RefreshType
Idle IdleCallback
stillDown = SettableStateVar (Maybe IdleCallback)
idleCallback forall t a (m :: * -> *).
(HasSetter t a, MonadIO m) =>
t -> a -> m ()
$= forall a. a -> Maybe a
Just (IdleCallback
stillDown forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *). MonadIO m => Maybe Window -> m ()
postRedisplay forall a. Maybe a
Nothing)
setRefresh (Timer Int
t) IdleCallback
stillDown = Int -> IdleCallback -> IdleCallback
addTimerCallback Int
t (IdleCallback -> Int -> IdleCallback
timer IdleCallback
stillDown Int
t)
timer :: StillDownHandler -> Int -> TimerCallback
timer :: IdleCallback -> Int -> IdleCallback
timer IdleCallback
stillDown Int
t = do
IdleCallback
stillDown
forall (m :: * -> *). MonadIO m => Maybe Window -> m ()
postRedisplay forall a. Maybe a
Nothing
Int -> IdleCallback -> IdleCallback
addTimerCallback Int
t (IdleCallback -> Int -> IdleCallback
timer IdleCallback
stillDown Int
t)