From 377700d5cec4dee002b3805e49af36c1af832f5b Mon Sep 17 00:00:00 2001 From: Nikita Leonov Date: Sun, 8 Oct 2017 13:00:39 -0700 Subject: [PATCH] Fixed an incorrect computation of delay. --- src/Helm.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Helm.hs b/src/Helm.hs index 76550e4..c8c4836 100644 --- a/src/Helm.hs +++ b/src/Helm.hs @@ -167,9 +167,10 @@ delayIfNeeded -> Double -- ^ Current time. -> IO () -- ^ An IO monad that delays the main thread to ensure that frames are not rendered faster than limit allows. delayIfNeeded Unlimited _ _ = return () -delayIfNeeded (Limited fpsLimit) lastRender currentTime = do - if delay > 0 +delayIfNeeded (Limited fpsLimit) lastRender currentTime = if delay > 0 then threadDelay delay else putStrLn "Warning: FPS degradation. You may want to tune your update or FPS limits." where - delay = ceiling $ 1000*(currentTime - lastRender) - (fromIntegral fpsLimit) + microsecondsLimitPerFrame = ceiling $ 1000000.0 / (fromIntegral fpsLimit) + microsecondsForLastFrame = ceiling $ currentTime - lastRender + delay = microsecondsLimitPerFrame - microsecondsForLastFrame