From 265c7ae3c01f1fdfe2ad100bc0462480b7b0d575 Mon Sep 17 00:00:00 2001
From: Benjamin Koch <snowball@c3pb.de>
Date: Sun, 13 Dec 2020 05:59:25 +0100
Subject: [PATCH] Restart failed script on click

---
 src/QBar/Blocks/Script.hs | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/QBar/Blocks/Script.hs b/src/QBar/Blocks/Script.hs
index 0f2f661..9f8811f 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
-- 
GitLab