From 90897e39933036f42249d64b9612a1071a14d8ca Mon Sep 17 00:00:00 2001 From: syntaxbullet Date: Fri, 3 Jul 2026 09:41:12 +0200 Subject: [PATCH] fix(renderer): derive backing size from viewport state --- renderer/renderer.ts | 15 +++++++-------- view/CanvasViewport.tsx | 2 -- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/renderer/renderer.ts b/renderer/renderer.ts index fae79b9..4740686 100644 --- a/renderer/renderer.ts +++ b/renderer/renderer.ts @@ -8,7 +8,6 @@ export type RenderFrame = { export type ImageRenderer = { render(frame: RenderFrame): void; - resize(width: number, height: number): void; dispose(): void; }; @@ -25,16 +24,16 @@ export function createRenderer(canvas: HTMLCanvasElement, backend: RendererBacke } return { - render() { - context.viewport(0, 0, canvas.width, canvas.height); + render(frame) { + const { w, h } = frame.editor.viewport.size; + + if (canvas.width !== w) canvas.width = w; + if (canvas.height !== h) canvas.height = h; + + context.viewport(0, 0, w, h); context.clearColor(0, 0, 0, 0); context.clear(context.COLOR_BUFFER_BIT); }, - resize(width, height) { - canvas.width = width; - canvas.height = height; - context.viewport(0, 0, width, height); - }, dispose() {}, }; } diff --git a/view/CanvasViewport.tsx b/view/CanvasViewport.tsx index 253c6ab..17ad154 100644 --- a/view/CanvasViewport.tsx +++ b/view/CanvasViewport.tsx @@ -17,8 +17,6 @@ export function CanvasViewport({ store }: CanvasViewportProps) { const width = Math.floor(entry.contentRect.width); const height = Math.floor(entry.contentRect.height); - canvas.width = width; - canvas.height = height; store.dispatch("viewport.setSize", { w: width, h: height }); });