From b36cf634ad5c075d6b1e73880433711a6786773c Mon Sep 17 00:00:00 2001 From: Amir Saeid Date: Tue, 6 Jul 2021 21:40:02 +0100 Subject: Replace forkIO with bracket & Concurrent.Async --- src/Xmobar/Plugins/Kraken.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Xmobar/Plugins/Kraken.hs b/src/Xmobar/Plugins/Kraken.hs index 4a15199..8f2e1cc 100644 --- a/src/Xmobar/Plugins/Kraken.hs +++ b/src/Xmobar/Plugins/Kraken.hs @@ -3,8 +3,9 @@ module Xmobar.Plugins.Kraken (Kraken(..)) where -import Control.Concurrent -import Control.Exception (catch) +import Control.Concurrent (MVar, newEmptyMVar, putMVar, takeMVar) +import Control.Concurrent.Async (async, cancel) +import Control.Exception (bracket, catch) import Control.Monad (forever, mzero, void, when) import Data.Aeson import Data.Aeson.Types (Parser, typeMismatch) @@ -28,14 +29,14 @@ instance Exec Kraken where alias (Kraken _ a) = a start (Kraken ps _) cb = do mvar <- newEmptyMVar - forkIO $ reconnectOnConnectionClose $ wsClientApp ps mvar - let loop mv p = do - v <- takeMVar mv - let g = Map.insert (unpack $ fst v) (snd v) p - cb (display g) - loop mv g - - loop mvar (Map.fromList $ zip ps (repeat 0.0)) + bracket (async $ reconnectOnConnectionClose $ wsClientApp ps mvar) cancel $ \_ -> do + let loop mv p = do + v <- takeMVar mv + let g = Map.insert (unpack $ fst v) (snd v) p + cb (display g) + loop mv g + + loop mvar (Map.fromList $ zip ps (repeat 0.0)) where display :: Map.Map String Double -> String -- cgit v1.2.3