Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Tanasenko2016-04-23 10:08:13 +0000
committerAnton Tanasenko2016-04-23 10:08:13 +0000
commit548fc385043e6c9593e729c56a3a656cf6a87d71 (patch)
tree3996f47533e50e4607e6f22316318f7271926942
parentcd9321f9f95e4367b284294013705ecc32689582 (diff)
downloadm2e-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.java35
-rw-r--r--org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/MvnIndexPlugin.java2
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;
}

Back to the top