diff options
Diffstat (limited to 'packages/app/src/context/global-sync.tsx')
| -rw-r--r-- | packages/app/src/context/global-sync.tsx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/app/src/context/global-sync.tsx b/packages/app/src/context/global-sync.tsx index 86ac9b45a..0cf3570a8 100644 --- a/packages/app/src/context/global-sync.tsx +++ b/packages/app/src/context/global-sync.tsx @@ -72,10 +72,16 @@ function createGlobalSync() { let projectWritten = false let bootedAt = 0 let bootingRoot = false + let eventFrame: number | undefined + let eventTimer: ReturnType<typeof setTimeout> | undefined onCleanup(() => { active = false }) + onCleanup(() => { + if (eventFrame !== undefined) cancelAnimationFrame(eventFrame) + if (eventTimer !== undefined) clearTimeout(eventTimer) + }) const cacheProjects = () => { setProjectCache( @@ -348,6 +354,20 @@ function createGlobalSync() { } onMount(() => { + if (typeof requestAnimationFrame === "function") { + eventFrame = requestAnimationFrame(() => { + eventFrame = undefined + eventTimer = setTimeout(() => { + eventTimer = undefined + globalSDK.event.start() + }, 0) + }) + } else { + eventTimer = setTimeout(() => { + eventTimer = undefined + globalSDK.event.start() + }, 0) + } void bootstrap() }) |
