@@ -223,27 +223,16 @@ runImmediateDomBuilderT
223 -> ImmediateDomBuilderEnv t
223 -> ImmediateDomBuilderEnv t
224 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
224 -> Chan [DSum (EventTriggerRef t) TriggerInvocation]
226−runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan = do
226+runImmediateDomBuilderT (ImmediateDomBuilderT a) env eventChan =
227− handlersMVar <- liftIO $ newMVar []
228 flip runTriggerEventT eventChan $ do
227 flip runTriggerEventT eventChan $ do
229− win <- DOM.currentWindowUnchecked
230 rec (x, req) <- runRequesterT (runReaderT a env) rsp
228 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 $
232 traverseRequesterData (\r -> Identity <$> r) rm
230 traverseRequesterData (\r -> Identity <$> r) rm
235− runInAnimationFrame handlersMVar win f x = do
233+ runInAnimationFrame f x = void . DOM.inAnimationFrame' $ \_ -> 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
245 v <- synchronously x
234 v <- synchronously x
246− void . liftIO $ f v) : handlers)
235+ void . liftIO $ f v
248class Monad m => HasDocument m where
237class Monad m => HasDocument m where
249 askDocument :: m Document
238 askDocument :: m Document