diff options
-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; } |