summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/idle-render.ts
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2023-07-21 10:53:37 +0000
committerGitHub <noreply@github.com>2023-07-21 10:53:37 +0000
commita87dd5ddec2e9e6b53e8eb9883277ec582f1bc0a (patch)
treed6b6d3ef74dd7c1a706dafb316b1d50ebfbd3ea3 /packages/frontend/src/scripts/idle-render.ts
parentchore: update pnpm to 8.6.9 (diff)
downloadsharkey-a87dd5ddec2e9e6b53e8eb9883277ec582f1bc0a.tar.gz
sharkey-a87dd5ddec2e9e6b53e8eb9883277ec582f1bc0a.tar.bz2
sharkey-a87dd5ddec2e9e6b53e8eb9883277ec582f1bc0a.zip
fix: response to experimental rIC support on Safari removed due to Google Login bug?
Diffstat (limited to 'packages/frontend/src/scripts/idle-render.ts')
-rw-r--r--packages/frontend/src/scripts/idle-render.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/idle-render.ts b/packages/frontend/src/scripts/idle-render.ts
index ccce8b02bf..781b624cdf 100644
--- a/packages/frontend/src/scripts/idle-render.ts
+++ b/packages/frontend/src/scripts/idle-render.ts
@@ -1,3 +1,20 @@
+const requestIdleCallback: typeof globalThis.requestIdleCallback = globalThis.requestIdleCallback ?? (callback) => {
+ const start = performance.now();
+ const timeoutId = setTimeout(() => {
+ callback({
+ didTimeout: false, // polyfill でタイムアウト発火することはない
+ timeRemaining() {
+ const diff = performance.now() - start;
+ return Math.max(0, 50 - diff); // <https://www.w3.org/TR/requestidlecallback/#idle-periods>
+ },
+ });
+ });
+ return timeoutId;
+};
+const cancelIdleCallback: typeof globalThis.cancelIdleCallback = globalThis.cancelIdleCallback ?? (timeoutId) => {
+ clearTimeout(timeoutId);
+};
+
class IdlingRenderScheduler {
#renderers: Set<FrameRequestCallback>;
#rafId: number;