mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-04-14 16:40:58 -04:00
fix: canvas flickering due to resetting canvas on skipped frames (#6960)
This commit is contained in:
parent
188921c247
commit
27fd150a20
1 changed files with 19 additions and 4 deletions
|
@ -37,10 +37,25 @@ const StaticCanvas = (props: StaticCanvasProps) => {
|
||||||
canvas.classList.add("excalidraw__canvas", "static");
|
canvas.classList.add("excalidraw__canvas", "static");
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.style.width = `${props.appState.width}px`;
|
const widthString = `${props.appState.width}px`;
|
||||||
canvas.style.height = `${props.appState.height}px`;
|
const heightString = `${props.appState.height}px`;
|
||||||
canvas.width = props.appState.width * props.scale;
|
if (canvas.style.width !== widthString) {
|
||||||
canvas.height = props.appState.height * props.scale;
|
canvas.style.width = widthString;
|
||||||
|
}
|
||||||
|
if (canvas.style.height !== heightString) {
|
||||||
|
canvas.style.height = heightString;
|
||||||
|
}
|
||||||
|
|
||||||
|
const scaledWidth = props.appState.width * props.scale;
|
||||||
|
const scaledHeight = props.appState.height * props.scale;
|
||||||
|
// setting width/height resets the canvas even if dimensions not changed,
|
||||||
|
// which would cause flicker when we skip frame (due to throttling)
|
||||||
|
if (canvas.width !== scaledWidth) {
|
||||||
|
canvas.width = scaledWidth;
|
||||||
|
}
|
||||||
|
if (canvas.height !== scaledHeight) {
|
||||||
|
canvas.height = scaledHeight;
|
||||||
|
}
|
||||||
|
|
||||||
renderStaticScene(
|
renderStaticScene(
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue