@@ -208,27 +208,16 @@ runImmediateDomBuilderT
208 -> ImmediateDomBuilderEnv t
208 -> ImmediateDomBuilderEnv t
209 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
209 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
211−runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan = do
211+runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan =
212− handlersMVar <- liftIO $ newMVar []
213 flip runTriggerEventT eventChan $ do
212 flip runTriggerEventT eventChan $ do
214− win <- DOM.currentWindowUnchecked
215 rec (x, req) <- runRequesterT (runReaderT a env) rsp
213 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 $
217 DMap.traverseWithKey (\_ r -> Identity <$> r) rm
215 DMap.traverseWithKey (\_ r -> Identity <$> r) rm
220− runInAnimationFrame handlersMVar win f x = do
218+ runInAnimationFrame f x = void . DOM.inAnimationFrame' $ \_ -> 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
230 v <- synchronously x
219 v <- synchronously x
231− void . liftIO $ f v) : handlers)
220+ void . liftIO $ f v
233class Monad m => HasDocument m where
222class Monad m => HasDocument m where
234 askDocument :: m Document
223 askDocument :: m Document