perf(ui): do not cache controlnet images unless required

This commit is contained in:
psychedelicious 2024-04-30 00:00:26 +10:00 committed by Kent Keirsey
parent ded8267505
commit c354470cd1

View File

@ -470,15 +470,26 @@ const updateControlNetLayerImageAttrs = (
konvaImage: Konva.Image, konvaImage: Konva.Image,
reduxLayer: ControlAdapterLayer reduxLayer: ControlAdapterLayer
) => { ) => {
konvaImage.setAttrs({ let needsCache = false;
opacity: reduxLayer.opacity, const newWidth = stage.width() / stage.scaleX();
scaleX: 1, const newHeight = stage.height() / stage.scaleY();
scaleY: 1, if (konvaImage.width() !== newWidth || konvaImage.height() !== newHeight) {
width: stage.width() / stage.scaleX(), konvaImage.setAttrs({
height: stage.height() / stage.scaleY(), opacity: reduxLayer.opacity,
visible: reduxLayer.isEnabled, scaleX: 1,
}); scaleY: 1,
konvaImage.cache(); width: stage.width() / stage.scaleX(),
height: stage.height() / stage.scaleY(),
visible: reduxLayer.isEnabled,
});
needsCache = true;
}
if (konvaImage.opacity() !== reduxLayer.opacity) {
konvaImage.opacity(reduxLayer.opacity);
}
if (needsCache) {
konvaImage.cache();
}
}; };
const renderControlNetLayer = (stage: Konva.Stage, reduxLayer: ControlAdapterLayer) => { const renderControlNetLayer = (stage: Konva.Stage, reduxLayer: ControlAdapterLayer) => {