Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type FileEventChan = TChan Event
- data ShouldReadFile
- data FileEventListener = FileEventListener {
- felEventTChan :: TChan (Either Event String)
- felIgnoreNextEventsNear :: TVar (Maybe UTCTime)
- felStopMVar :: MVar ()
- atomicallyIO :: MonadIO m => STM a -> m a
- readTChanIO :: MonadIO m => TChan a -> m a
- writeTChanIO :: MonadIO m => TChan a -> a -> m ()
- tryReadTChanIO :: MonadIO m => TChan a -> m (Maybe a)
- fileModifiedPredicate :: FilePath -> Event -> Bool
- eventListenerForFile :: MonadIO m => FilePath -> ShouldReadFile -> m FileEventListener
- eventListenerForDirectory :: MonadIO m => FilePath -> [String] -> m FileEventListener
- killFileEventListener :: MonadIO m => FileEventListener -> m ()
- modifiedWithExtensionPredicate :: [String] -> Event -> Bool
- forkDirectoryListenerThread :: FilePath -> [String] -> TChan (Either Event String) -> IO (MVar ())
- forkFileListenerThread :: FilePath -> ShouldReadFile -> TChan (Either Event String) -> TVar (Maybe UTCTime) -> IO (MVar ())
- setIgnoreTimeNow :: MonadIO m => FileEventListener -> m ()
- setIgnoreTime :: MonadIO m => FileEventListener -> UTCTime -> m ()
- readFileEvent :: MonadIO m => FileEventListener -> m (Either Event String)
- onFileEvent :: MonadIO m => FileEventListener -> m () -> m ()
- onTChanRead :: MonadIO m => TChan a -> m () -> m ()
- makeWatchedResource :: FilePath -> IO a -> IO (IO a)
Documentation
type FileEventChan = TChan Event Source #
data ShouldReadFile Source #
data FileEventListener Source #
FileEventListener | |
|
atomicallyIO :: MonadIO m => STM a -> m a Source #
readTChanIO :: MonadIO m => TChan a -> m a Source #
writeTChanIO :: MonadIO m => TChan a -> a -> m () Source #
eventListenerForFile :: MonadIO m => FilePath -> ShouldReadFile -> m FileEventListener Source #
eventListenerForDirectory :: MonadIO m => FilePath -> [String] -> m FileEventListener Source #
killFileEventListener :: MonadIO m => FileEventListener -> m () Source #
forkDirectoryListenerThread :: FilePath -> [String] -> TChan (Either Event String) -> IO (MVar ()) Source #
forkFileListenerThread :: FilePath -> ShouldReadFile -> TChan (Either Event String) -> TVar (Maybe UTCTime) -> IO (MVar ()) Source #
setIgnoreTimeNow :: MonadIO m => FileEventListener -> m () Source #
setIgnoreTime :: MonadIO m => FileEventListener -> UTCTime -> m () Source #
readFileEvent :: MonadIO m => FileEventListener -> m (Either Event String) Source #
onFileEvent :: MonadIO m => FileEventListener -> m () -> m () Source #
onTChanRead :: MonadIO m => TChan a -> m () -> m () Source #
makeWatchedResource :: FilePath -> IO a -> IO (IO a) Source #
Creates a getter for a set of resources that will be rebuilt whenever the file changes. Takes a filename and an action to create a resource based on that file. getWatchedResource <- makeWatchedResource "resources/shapes.frag" $ do shader <- createShaderProgram "resourcesshapes.vert" "resourcesshapes.frag" useProgram shader
uTime <- getShaderUniform shader "uTime"
(quadVAO, quadVertCount) <- makeScreenSpaceQuad shader return (quadVAO, quadVertCount, uTime) Then use (quadVAO, quadVertCount, uResolution, uMouse, uTime) <- getWatchedResource in main loop