@@ -208,27 +208,16 @@ runImmediateDomBuilderT
208208 -> ImmediateDomBuilderEnv t
209209 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
210210 -> m a
211−runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan = do
212− handlersMVar <- liftIO $ newMVar []
211+runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan =
213212 flip runTriggerEventT eventChan $ do
214− win <- DOM.currentWindowUnchecked
215213 rec (x, req) <- runRequesterT (runReaderT a env) rsp
216− rsp <- performEventAsync $ ffor req $ \rm f -> liftJSM $ runInAnimationFrame handlersMVar win f $
214+ rsp <- performEventAsync $ ffor req $ \rm f -> liftJSM $ runInAnimationFrame f $
217215 DMap.traverseWithKey (\_ r -> Identity <$> r) rm
218216 return x
219217 where
220− runInAnimationFrame handlersMVar win f x = do
221− handlers <- liftIO $ takeMVar handlersMVar
222− when (null handlers) $ do
223− rec cb <- newRequestAnimationFrameCallbackSync $ \_ -> do
224− freeRequestAnimationFrameCallback cb
225− handlersToRun <- liftIO $ takeMVar handlersMVar
226− liftIO $ putMVar handlersMVar []
227− sequence_ (reverse handlersToRun)
228− void $ Window.requestAnimationFrame win cb
229− liftIO $ putMVar handlersMVar ((do
218+ runInAnimationFrame f x = void . DOM.inAnimationFrame' $ \_ -> do
230219 v <- synchronously x
231− void . liftIO $ f v) : handlers)
220+ void . liftIO $ f v
232221
233222class Monad m => HasDocument m where
234223 askDocument :: m Document