@@ -12,9 +12,9 @@ import Data.Time.Clock
1212-- | Send events over time with the given basis time and interval
1313-- If the system starts running behind, occurrences will be dropped rather than buffered
1414-- Each occurrence of the resulting event will contain the index of the current interval, with 0 representing the basis time
15−skippableIntervalsAround :: MonadWidget t m => UTCTime -> NominalDiffTime -> m (Event t Integer)
16−skippableIntervalsAround t0 dt = performEventAsync . fmap callAtNextInterval =<< getPostBuild
17− where callAtNextInterval _ cb = void $ liftIO $ forkIO $ do
15+tickLossy :: MonadWidget t m => NominalDiffTime -> UTCTime -> m (Event t Integer)
16+tickLossy dt t0 = performEventAsync . fmap callAtNextInterval =<< getPostBuild
17+ where callAtNextInterval _ cb = void $ liftIO $ forkIO $ forever $ do
1818 t <- getCurrentTime
1919 let offset = t `diffUTCTime` t0
2020 (n, delay) = offset `divMod'` dt