{-# LANGUAGE CPP #-}
module Control.AutoUpdate (
UpdateSettings,
defaultUpdateSettings,
updateAction,
updateFreq,
updateSpawnThreshold,
updateThreadName,
mkAutoUpdate,
mkAutoUpdateWithModify,
)
where
import Control.AutoUpdate.Types
#ifdef mingw32_HOST_OS
import Control.AutoUpdate.Thread
#else
import qualified Control.AutoUpdate.Event as Event
import qualified Control.AutoUpdate.Thread as Thread
import GHC.Event
mkAutoUpdate :: UpdateSettings a -> IO (IO a)
mkAutoUpdate :: forall a. UpdateSettings a -> IO (IO a)
mkAutoUpdate UpdateSettings a
settings = do
Maybe EventManager
mmgr <- IO (Maybe EventManager)
getSystemEventManager
case Maybe EventManager
mmgr of
Maybe EventManager
Nothing -> UpdateSettings a -> IO (IO a)
forall a. UpdateSettings a -> IO (IO a)
Thread.mkAutoUpdate UpdateSettings a
settings
Just EventManager
_m -> UpdateSettings a -> IO (IO a)
forall a. UpdateSettings a -> IO (IO a)
Event.mkAutoUpdate UpdateSettings a
settings
mkAutoUpdateWithModify :: UpdateSettings a -> (a -> IO a) -> IO (IO a)
mkAutoUpdateWithModify :: forall a. UpdateSettings a -> (a -> IO a) -> IO (IO a)
mkAutoUpdateWithModify UpdateSettings a
settings a -> IO a
f = do
Maybe EventManager
mmgr <- IO (Maybe EventManager)
getSystemEventManager
case Maybe EventManager
mmgr of
Maybe EventManager
Nothing -> UpdateSettings a -> (a -> IO a) -> IO (IO a)
forall a. UpdateSettings a -> (a -> IO a) -> IO (IO a)
Thread.mkAutoUpdateWithModify UpdateSettings a
settings a -> IO a
f
Just EventManager
_m -> UpdateSettings a -> (a -> IO a) -> IO (IO a)
forall a. UpdateSettings a -> (a -> IO a) -> IO (IO a)
Event.mkAutoUpdateWithModify UpdateSettings a
settings a -> IO a
f
#endif