File tree 1 file changed +5
-10
lines changed
ghcide/src/Development/IDE/Core 1 file changed +5
-10
lines changed Original file line number Diff line number Diff line change @@ -35,19 +35,14 @@ newAsyncDebouncer = Debouncer . asyncRegisterEvent <$> STM.newIO
35
35
36
36
-- | Register an event that will fire after the given delay if no other event
37
37
-- for the same key gets registered until then.
38
- --
39
- -- If there is a pending event for the same key, the pending event will be killed.
40
- -- Events are run unmasked so it is up to the user of `registerEvent`
41
- -- to mask if required.
42
38
asyncRegisterEvent :: (Eq k , Hashable k ) => STM. Map k (TVar (Seconds , IO () )) -> Seconds -> k -> IO () -> IO ()
43
- asyncRegisterEvent d delay k fire = mask_ $ do
44
- prev <- atomically $ STM. lookup k d
39
+ asyncRegisterEvent d delay k fire = join $ atomically $ do
40
+ prev <- STM. lookup k d
45
41
case prev of
46
- Just v -> do
47
- atomicallyNamed " debouncer - reset" $ writeTVar v (delay, fire)
48
- Nothing -> do
42
+ Just v -> writeTVar v (delay, fire) >> return (pure () )
43
+ Nothing -> return $ do
49
44
var <- newTVarIO (delay, fire)
50
- _ <- asyncWithUnmask $ \ unmask -> unmask $ do
45
+ _ <- async $ do
51
46
join $ atomicallyNamed " debouncer - sleep" $ do
52
47
(s,act) <- readTVar var
53
48
unsafeIOToSTM $ sleep s
You can’t perform that action at this time.
0 commit comments