diff --git a/diylc/diylc-core/src/org/diylc/presenter/DrawingCache.java b/diylc/diylc-core/src/org/diylc/presenter/DrawingCache.java index 1fe2c1fc..0ed894a6 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/DrawingCache.java +++ b/diylc/diylc-core/src/org/diylc/presenter/DrawingCache.java @@ -23,6 +23,7 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.lang.ref.SoftReference; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; @@ -163,6 +164,12 @@ public class DrawingCache { imageCache.clear(); } + public void invalidate(Collection> components) { + for (IDIYComponent component : components) { + imageCache.remove(component); + } + } + private CacheValue renderAndCache(IDIYComponent component, G2DWrapper g2d, ComponentState componentState, boolean outlineMode, Project project, double zoom) { // if we need to apply caching diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index d7ffc52e..91aaee6b 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -1772,6 +1772,8 @@ public class Presenter implements IPlugInPort { drawingManager.clearContinuityArea(); currentProject.getComponents().removeAll(selectedComponents); + DrawingCache.Instance.invalidate(selectedComponents); + messageDispatcher.dispatchMessage(EventType.PROJECT_MODIFIED, oldProject, currentProject.clone(), "Delete"); drawingManager.clearContinuityArea(); projectFileManager.notifyFileChange(); diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 19d12c93..1d650220 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3864,7 +3864,11 @@ IMPROVEMENT - Limit memory usage to avoid out of memory errors when 'Cache Boost' feature is enabled + Limit memory usage to avoid out of memory errors when 'Cache Boost' feature is enabled on complex project + + + IMPROVEMENT + Cleanup cache when a component is deleted from the project IMPROVEMENT