@@ -15,8 +15,8 @@ module Development.IDE.Core.ProgressReporting
15
15
16
16
import Control.Concurrent.Async
17
17
import Control.Concurrent.STM.Stats (TVar , atomicallyNamed ,
18
- newTVarIO , readTVar ,
19
- readTVarIO , writeTVar )
18
+ modifyTVar' , newTVarIO ,
19
+ readTVarIO )
20
20
import Control.Concurrent.Strict
21
21
import Control.Monad.Extra
22
22
import Control.Monad.IO.Class
@@ -86,14 +86,12 @@ recordProgress :: InProgressState -> NormalizedFilePath -> (Int -> Int) -> IO ()
86
86
recordProgress InProgressState {.. } file shift = do
87
87
(prev, new) <- atomicallyNamed " recordProgress" $ STM. focus alterPrevAndNew file currentVar
88
88
atomicallyNamed " recordProgress2" $ do
89
- done <- readTVar doneVar
90
- todo <- readTVar todoVar
91
89
case (prev,new) of
92
- (Nothing ,0 ) -> writeTVar doneVar (done + 1 ) >> writeTVar todoVar (todo + 1 )
93
- (Nothing ,_) -> writeTVar todoVar (todo + 1 )
90
+ (Nothing ,0 ) -> modifyTVar' doneVar (+ 1 ) >> modifyTVar' todoVar (+ 1 )
91
+ (Nothing ,_) -> modifyTVar' todoVar (+ 1 )
94
92
(Just 0 , 0 ) -> pure ()
95
- (Just 0 , _) -> writeTVar doneVar (done - 1 )
96
- (Just _, 0 ) -> writeTVar doneVar (done + 1 )
93
+ (Just 0 , _) -> modifyTVar' doneVar pred
94
+ (Just _, 0 ) -> modifyTVar' doneVar (+ 1 )
97
95
(Just _, _) -> pure ()
98
96
where
99
97
alterPrevAndNew = do
0 commit comments