@@ -83,20 +83,18 @@ newInProgress :: IO InProgressState
83
83
newInProgress = InProgressState <$> newTVarIO 0 <*> newTVarIO 0 <*> STM. newIO
84
84
85
85
recordProgress :: InProgressState -> NormalizedFilePath -> (Int -> Int ) -> IO ()
86
- recordProgress InProgressState {.. } file shift = atomicallyNamed " recordProgress" $ do
87
- done <- readTVar doneVar
88
- todo <- readTVar todoVar
89
- (prev, new) <- STM. focus alterPrevAndNew file currentVar
90
- let (done',todo') =
91
- case (prev,new) of
92
- (Nothing ,0 ) -> (done+ 1 , todo+ 1 )
93
- (Nothing ,_) -> (done, todo+ 1 )
94
- (Just 0 , 0 ) -> (done , todo)
95
- (Just 0 , _) -> (done- 1 , todo)
96
- (Just _, 0 ) -> (done+ 1 , todo)
97
- (Just _, _) -> (done , todo)
98
- writeTVar todoVar todo'
99
- writeTVar doneVar done'
86
+ recordProgress InProgressState {.. } file shift = do
87
+ (prev, new) <- atomicallyNamed " recordProgress" $ STM. focus alterPrevAndNew file currentVar
88
+ atomicallyNamed " recordProgress2" $ do
89
+ done <- readTVar doneVar
90
+ todo <- readTVar todoVar
91
+ case (prev,new) of
92
+ (Nothing ,0 ) -> writeTVar doneVar (done+ 1 ) >> writeTVar todoVar (todo+ 1 )
93
+ (Nothing ,_) -> writeTVar todoVar (todo+ 1 )
94
+ (Just 0 , 0 ) -> pure ()
95
+ (Just 0 , _) -> writeTVar doneVar (done- 1 )
96
+ (Just _, 0 ) -> writeTVar doneVar (done+ 1 )
97
+ (Just _, _) -> pure ()
100
98
where
101
99
alterPrevAndNew = do
102
100
prev <- Focus. lookup
0 commit comments