RLottie: Fix redundant render

This commit is contained in:
Alexander Zinchuk 2022-11-02 02:43:39 +01:00
parent b86d857277
commit 9f8fe22f3c

View File

@ -39,9 +39,9 @@ class RLottie {
private containers = new Map<HTMLDivElement, { private containers = new Map<HTMLDivElement, {
canvas: HTMLCanvasElement; canvas: HTMLCanvasElement;
ctx: CanvasRenderingContext2D; ctx: CanvasRenderingContext2D;
onLoad?: NoneToVoidFunction; isLoaded?: boolean;
isOnLoadFired?: boolean;
isPaused?: boolean; isPaused?: boolean;
onLoad?: NoneToVoidFunction;
}>(); }>();
private imgSize!: number; private imgSize!: number;
@ -372,21 +372,17 @@ class RLottie {
this.containers.forEach((containerData) => { this.containers.forEach((containerData) => {
const { const {
ctx, onLoad, isOnLoadFired, isPaused, ctx, isLoaded, isPaused, onLoad,
} = containerData; } = containerData;
if (onLoad && !isOnLoadFired) { if (!isLoaded || !isPaused) {
containerData.isOnLoadFired = true;
onLoad();
ctx.putImageData(imageData, 0, 0); // Always render first frame
}
if (isPaused) {
return;
}
ctx.putImageData(imageData, 0, 0); ctx.putImageData(imageData, 0, 0);
}
if (!isLoaded) {
containerData.isLoaded = true;
onLoad?.();
}
}); });
this.prevFrameIndex = frameIndex; this.prevFrameIndex = frameIndex;