{-# 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 -> StillDownHandler -> StillDownHandler
setRefresh RefreshType
Idle StillDownHandler
stillDown = SettableStateVar (Maybe StillDownHandler)
idleCallback SettableStateVar (Maybe StillDownHandler)
-> Maybe StillDownHandler -> StillDownHandler
forall t a (m :: * -> *).
(HasSetter t a, MonadIO m) =>
t -> a -> m ()
$= StillDownHandler -> Maybe StillDownHandler
forall a. a -> Maybe a
Just (StillDownHandler
stillDown StillDownHandler -> StillDownHandler -> StillDownHandler
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Maybe Window -> StillDownHandler
forall (m :: * -> *). MonadIO m => Maybe Window -> m ()
postRedisplay Maybe Window
forall a. Maybe a
Nothing)
setRefresh (Timer Int
t) StillDownHandler
stillDown = Int -> StillDownHandler -> StillDownHandler
addTimerCallback Int
t (StillDownHandler -> Int -> StillDownHandler
timer StillDownHandler
stillDown Int
t)
timer :: StillDownHandler -> Int -> TimerCallback
timer :: StillDownHandler -> Int -> StillDownHandler
timer StillDownHandler
stillDown Int
t = do
StillDownHandler
stillDown
Maybe Window -> StillDownHandler
forall (m :: * -> *). MonadIO m => Maybe Window -> m ()
postRedisplay Maybe Window
forall a. Maybe a
Nothing
Int -> StillDownHandler -> StillDownHandler
addTimerCallback Int
t (StillDownHandler -> Int -> StillDownHandler
timer StillDownHandler
stillDown Int
t)