diff --git a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCacheModule.ts b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCacheModule.ts index 40875ed78bc..d731ff766da 100644 --- a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCacheModule.ts +++ b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCacheModule.ts @@ -39,9 +39,9 @@ type CanvasCacheModuleConfig = { const DEFAULT_CONFIG: CanvasCacheModuleConfig = { imageNameCacheSize: 1000, - imageDataCacheSize: 32, + imageDataCacheSize: 64, transparencyCalculationCacheSize: 1000, - canvasElementCacheSize: 32, + canvasElementCacheSize: 128, generationModeCacheSize: 100, }; diff --git a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterBase.ts b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterBase.ts index c733334ed09..3b9b4808322 100644 --- a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterBase.ts +++ b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterBase.ts @@ -325,7 +325,7 @@ export abstract class CanvasEntityAdapterBase entity?.position); - syncIsOnscreen = () => { + syncIsOnscreen = rafThrottle(() => { const stageRect = this.manager.stage.getScaledStageRect(); const isOnScreen = this.checkIntersection(stageRect); const prevIsOnScreen = this.$isOnScreen.get(); @@ -334,9 +334,9 @@ export abstract class CanvasEntityAdapterBase { + syncIntersectsBbox = rafThrottle(() => { const bboxRect = this.manager.stateApi.getBbox().rect; const intersectsBbox = this.checkIntersection(bboxRect); const prevIntersectsBbox = this.$intersectsBbox.get(); @@ -344,7 +344,7 @@ export abstract class CanvasEntityAdapterBase { const entityRect = this.transformer.$pixelRect.get(); @@ -526,8 +526,13 @@ export abstract class CanvasEntityAdapterBase