module YampaSDL2.Internal.SDL.Input
  (inputAction) where

import qualified SDL
import Control.Concurrent
import FRP.Yampa

inputAction :: MVar DTime -> Bool -> IO (DTime, Maybe (Event SDL.EventPayload))
inputAction lastInteraction _canBlock = do
  maybeEvent <- SDL.waitEventTimeout maximumWaitTime
  currentTime <- SDL.time
  dt <- (currentTime -) <$> swapMVar lastInteraction currentTime

  return (dt, Event . SDL.eventPayload <$> maybeEvent)

minIPS = 30

maximumWaitTime = round $ 1000/fromIntegral minIPS