@@ -223,27 +223,16 @@ runImmediateDomBuilderT
223223 -> ImmediateDomBuilderEnv t
224224 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
225225 -> m a
226−runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan = do
227− handlersMVar <- liftIO $ newMVar []
226+runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan =
228227 flip runTriggerEventT eventChan $ do
229− win <- DOM.currentWindowUnchecked
230228 rec (x, req) <- runRequesterT (runReaderT a env) rsp
231− rsp <- performEventAsync $ ffor req $ \rm f -> liftJSM $ runInAnimationFrame handlersMVar win f $
229+ rsp <- performEventAsync $ ffor req $ \rm f -> liftJSM $ runInAnimationFrame f $
232230 traverseRequesterData (\r -> Identity <$> r) rm
233231 return x
234232 where
235− runInAnimationFrame handlersMVar win f x = do
236− handlers <- liftIO $ takeMVar handlersMVar
237− when (null handlers) $ do
238− rec cb <- newRequestAnimationFrameCallbackSync $ \_ -> do
239− freeRequestAnimationFrameCallback cb
240− handlersToRun <- liftIO $ takeMVar handlersMVar
241− liftIO $ putMVar handlersMVar []
242− sequence_ (reverse handlersToRun)
243− void $ Window.requestAnimationFrame win cb
244− liftIO $ putMVar handlersMVar ((do
233+ runInAnimationFrame f x = void . DOM.inAnimationFrame' $ \_ -> do
245234 v <- synchronously x
246− void . liftIO $ f v) : handlers)
235+ void . liftIO $ f v
247236
248237class Monad m => HasDocument m where
249238 askDocument :: m Document