diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Plugins/BufferedPipeReader.hs | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/src/Plugins/BufferedPipeReader.hs b/src/Plugins/BufferedPipeReader.hs index be6a652..04512e4 100644 --- a/src/Plugins/BufferedPipeReader.hs +++ b/src/Plugins/BufferedPipeReader.hs @@ -42,10 +42,10 @@ instance Exec BufferedPipeReader where          writer chan str rst          where -        initV :: IO ( TChan (Int, Bool, String), TMVar String, TVar Bool ) +        initV :: IO ( TChan (Int, Bool, String), TVar (Maybe String), TVar Bool )          initV = atomically $ do              tc <- newTChan -            ts <- newEmptyTMVar +            ts <- newTVar Nothing              tb <- newTVar False              return (tc, ts, tb) @@ -55,7 +55,8 @@ instance Exec BufferedPipeReader where                  atomically $ writeTChan tc (to, tg, dt)              reader p tc -        writer :: TChan (Int, Bool, String) -> TMVar String -> TVar Bool -> IO () +        writer :: TChan (Int, Bool, String) +               -> TVar (Maybe String) -> TVar Bool -> IO ()          writer tc ts otb = do              (to, tg, dt, ntb) <- update              cb dt @@ -70,14 +71,14 @@ instance Exec BufferedPipeReader where              update :: IO (Int, Bool, String, TVar Bool)              update = atomically $ do                  (to, tg, dt) <- readTChan tc -                when (to == 0) $ tryPutTMVar ts dt >> return () +                when (to == 0) $ writeTVar ts $ Just dt                  writeTVar otb False                  tb <- newTVar True                  return (to, tg, dt, tb) -        reset :: Int -> Bool -> TMVar String -> TVar Bool -> IO () +        reset :: Int -> Bool -> TVar (Maybe String) -> TVar Bool -> IO ()          reset to tg ts tb = do              threadDelay ( to * 100 * 1000 )              readTVarIO tb >>= \b -> when b $ do                  when tg $ putMVar signal Hide -                atomically (tryTakeTMVar ts) >>= maybe (return ()) cb +                atomically (readTVar ts) >>= maybe (return ()) cb | 
