diff --git a/src/QBar/Blocks/Script.hs b/src/QBar/Blocks/Script.hs index 0f2f6612b39610723965bfff0638b3aecfe5a080..9f8811f032f79ad50b59e57179efd899ba4acbb7 100644 --- a/src/QBar/Blocks/Script.hs +++ b/src/QBar/Blocks/Script.hs @@ -7,6 +7,7 @@ import QBar.TagParser import QBar.Time import Control.Exception (IOException) +import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar) import Data.Aeson (encode) import qualified Data.ByteString.Lazy.Char8 as C8 import qualified Data.Text.Lazy as T @@ -44,7 +45,12 @@ scriptBlock clickEvents path = catchP startScriptProcess (handleError Nothing) where handleError :: Maybe ExitCode -> IOException -> Block handleError exitCode exc = case result of - Left msg -> forever $ pushBlockUpdate $ mkErrorOutput msg + Left msg -> do + signal <- liftIO newEmptyMVar + pushBlockUpdate' (const $ liftIO $ putMVar signal ()) $ + mkErrorOutput msg + liftIO $ takeMVar signal + startScriptProcess Right x -> x where result = case (isEOFError exc, exitCode) of