fix(editor): call throttleRAF with lastArgs and remove trailing (#10905)
Co-authored-by: Varun Chawla <varun_6april@hotmail.com> Co-authored-by: aziamimoh <aziamimoh@users.noreply.github.com> Co-authored-by: pgzcoa <pgzcoa@users.noreply.github.com> Co-authored-by: TinaZhang24 <TinaZhang24@users.noreply.github.com>
This commit is contained in:
co-authored by
Varun Chawla
aziamimoh
pgzcoa
TinaZhang24
parent
a0e93b6040
commit
757dfeb6ad
@@ -414,7 +414,6 @@ export const debugRenderer = throttleRAF(
|
|||||||
) => {
|
) => {
|
||||||
_debugRenderer(canvas, appState, elements, scale);
|
_debugRenderer(canvas, appState, elements, scale);
|
||||||
},
|
},
|
||||||
{ trailing: true },
|
|
||||||
);
|
);
|
||||||
|
|
||||||
export const loadSavedDebugState = () => {
|
export const loadSavedDebugState = () => {
|
||||||
|
|||||||
@@ -151,24 +151,19 @@ export const debounce = <T extends any[]>(
|
|||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
// throttle callback to execute once per animation frame
|
// throttle callback to execute once per animation frame using the latest args
|
||||||
export const throttleRAF = <T extends any[]>(
|
export const throttleRAF = <T extends any[]>(fn: (...args: T) => void) => {
|
||||||
fn: (...args: T) => void,
|
|
||||||
opts?: { trailing?: boolean },
|
|
||||||
) => {
|
|
||||||
let timerId: number | null = null;
|
let timerId: number | null = null;
|
||||||
let lastArgs: T | null = null;
|
let lastArgs: T | null = null;
|
||||||
let lastArgsTrailing: T | null = null;
|
|
||||||
|
|
||||||
const scheduleFunc = (args: T) => {
|
const scheduleFunc = () => {
|
||||||
timerId = window.requestAnimationFrame(() => {
|
timerId = window.requestAnimationFrame(() => {
|
||||||
timerId = null;
|
timerId = null;
|
||||||
fn(...args);
|
const args = lastArgs;
|
||||||
lastArgs = null;
|
lastArgs = null;
|
||||||
if (lastArgsTrailing) {
|
|
||||||
lastArgs = lastArgsTrailing;
|
if (args) {
|
||||||
lastArgsTrailing = null;
|
fn(...args);
|
||||||
scheduleFunc(lastArgs);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -180,9 +175,7 @@ export const throttleRAF = <T extends any[]>(
|
|||||||
}
|
}
|
||||||
lastArgs = args;
|
lastArgs = args;
|
||||||
if (timerId === null) {
|
if (timerId === null) {
|
||||||
scheduleFunc(lastArgs);
|
scheduleFunc();
|
||||||
} else if (opts?.trailing) {
|
|
||||||
lastArgsTrailing = args;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ret.flush = () => {
|
ret.flush = () => {
|
||||||
@@ -191,12 +184,12 @@ export const throttleRAF = <T extends any[]>(
|
|||||||
timerId = null;
|
timerId = null;
|
||||||
}
|
}
|
||||||
if (lastArgs) {
|
if (lastArgs) {
|
||||||
fn(...(lastArgsTrailing || lastArgs));
|
fn(...lastArgs);
|
||||||
lastArgs = lastArgsTrailing = null;
|
lastArgs = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ret.cancel = () => {
|
ret.cancel = () => {
|
||||||
lastArgs = lastArgsTrailing = null;
|
lastArgs = null;
|
||||||
if (timerId !== null) {
|
if (timerId !== null) {
|
||||||
cancelAnimationFrame(timerId);
|
cancelAnimationFrame(timerId);
|
||||||
timerId = null;
|
timerId = null;
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ export const renderNewElementSceneThrottled = throttleRAF(
|
|||||||
(config: NewElementSceneRenderConfig) => {
|
(config: NewElementSceneRenderConfig) => {
|
||||||
_renderNewElementScene(config);
|
_renderNewElementScene(config);
|
||||||
},
|
},
|
||||||
{ trailing: true },
|
|
||||||
);
|
);
|
||||||
|
|
||||||
export const renderNewElementScene = (
|
export const renderNewElementScene = (
|
||||||
|
|||||||
@@ -483,7 +483,6 @@ export const renderStaticSceneThrottled = throttleRAF(
|
|||||||
(config: StaticSceneRenderConfig) => {
|
(config: StaticSceneRenderConfig) => {
|
||||||
_renderStaticScene(config);
|
_renderStaticScene(config);
|
||||||
},
|
},
|
||||||
{ trailing: true },
|
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user