module Clocked.WinTimePeriod (withTimePeriod) where
#ifdef mingw32_HOST_OS
import Control.Monad.CatchIO
import Control.Monad.IO.Class
import Foreign.C.Types
foreign import ccall c_timeBeginPeriod :: CUInt -> IO ()
foreign import ccall c_timeEndPeriod :: CUInt -> IO ()
withTimePeriod :: MonadCatchIO m => CUInt -> m a -> m a
withTimePeriod n cmd =
bracket (liftIO $ c_timeBeginPeriod n) (const $ liftIO $ c_timeEndPeriod n) (const $ cmd)
#else
import Control.Monad.CatchIO
import Foreign.C.Types
withTimePeriod :: MonadCatchIO m => CUInt -> m a -> m a
withTimePeriod _ = id
#endif