Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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