{-# LANGUAGE MultiWayIf #-}
module TORCS.Connect.Util where
import Data.IORef
import FRP.Yampa (DTime)
import Data.Time.Clock
import Control.Concurrent
countLaps :: ([Double],Double) -> [Double]
countLaps (lapTs,lastT) = if
| lastT == 0 -> []
| lastT>0 && (length lapTs == 0 || lastT /= head lapTs) -> lastT : lapTs
| otherwise -> lapTs
timediff :: IORef UTCTime -> UTCTime -> IO DTime
timediff ref cur = do
old <- readIORef ref
writeIORef ref cur
return $ realToFrac $ diffUTCTime cur old
mySwapMVar :: MVar a -> a -> IO Bool
mySwapMVar m v = do
tryTakeMVar m
tryPutMVar m v