diff options
author | Anton Tanasenko | 2016-04-23 10:08:13 +0000 |
---|---|---|
committer | Anton Tanasenko | 2016-04-23 10:08:13 +0000 |
commit | 548fc385043e6c9593e729c56a3a656cf6a87d71 (patch) | |
tree | 3996f47533e50e4607e6f22316318f7271926942 | |
parent | cd9321f9f95e4367b284294013705ecc32689582 (diff) | |
download | m2e-core-548fc385043e6c9593e729c56a3a656cf6a87d71.tar.gz m2e-core-548fc385043e6c9593e729c56a3a656cf6a87d71.tar.xz m2e-core-548fc385043e6c9593e729c56a3a656cf6a87d71.zip |
492233 Don't load static images on shutdown
Move custom image map under an inner class to prevent loading of lots of
Image constants on shutdown.
Also, properly sync loading of custom images.
Change-Id: I51355c572fdb1e582b7ed747a9af0766d321dd1b
Signed-off-by: Anton Tanasenko <atg.sleepless@gmail.com>
-rw-r--r-- | org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnImages.java | 35 | ||||
-rw-r--r-- | org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java | 2 |
2 files changed, 22 insertions, 15 deletions
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnImages.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnImages.java index d1fbb471..6aa759b6 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnImages.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnImages.java @@ -12,8 +12,8 @@ package org.eclipse.m2e.editor.xml; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,8 +92,6 @@ public class MvnImages { public static final ImageDescriptor IMGD_WARNINGS = create("warnings.png"); //$NON-NLS-1$ - private static Map<ImageDescriptor, Image> customImages = new HashMap<>(); - private static ImageDescriptor create(String key) { try { ImageDescriptor imageDescriptor = createDescriptor(key); @@ -130,21 +128,30 @@ public class MvnImages { } public static Image getImage(ImageDescriptor imageDescriptor) { - Image image = customImages.get(imageDescriptor); - if(image != null) { - return image; - } - image = imageDescriptor.createImage(); - if(image != null) { - customImages.put(imageDescriptor, image); + Image image = Custom.images.get(imageDescriptor); + if(image == null) { + synchronized(Custom.images) { + image = Custom.images.get(imageDescriptor); + if(image == null) { + image = imageDescriptor.createImage(); + if(image != null) { + Custom.images.put(imageDescriptor, image); + } + } + } } return image; } - static void disposeCustomImages() { - for(Image img : customImages.values()) { - img.dispose(); + static class Custom { + static final Map<ImageDescriptor, Image> images = new ConcurrentHashMap<>(); + + static void dispose() { + for(Image img : images.values()) { + img.dispose(); + } + images.clear(); } - customImages.clear(); + } } diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java index 131e666e..bd2217df 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java @@ -49,7 +49,7 @@ public class MvnIndexPlugin extends AbstractUIPlugin { @Override public void stop(BundleContext context) throws Exception { super.stop(context); - MvnImages.disposeCustomImages(); + MvnImages.Custom.dispose(); defaultInstance = null; } |