Changeset 16074 in josm for trunk/src/org


Ignore:
Timestamp:
2020-03-08T11:45:44+01:00 (5 years ago)
Author:
simon04
Message:

fix #18884, see #18871 - ImageResource.imgCache: use ConcurrentHashMap

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/tools/ImageResource.java

    r16060 r16074  
    55import java.awt.Image;
    66import java.awt.image.BufferedImage;
    7 import java.util.HashMap;
    87import java.util.List;
    98import java.util.Map;
     9import java.util.concurrent.ConcurrentHashMap;
    1010
    1111import javax.swing.AbstractAction;
     
    3131     * Caches the image data for resized versions of the same image.
    3232     */
    33     private final Map<Dimension, BufferedImage> imgCache = new HashMap<>(4);
     33    private final Map<Dimension, BufferedImage> imgCache = new ConcurrentHashMap<>(4);
    3434    /**
    3535     * SVG diagram information in case of SVG vector image.
     
    285285    public ImageIcon getPaddedIcon(Dimension iconSize) {
    286286        final Dimension cacheKey = new Dimension(-iconSize.width, -iconSize.height); // use negative width/height for differentiation
    287         final BufferedImage image = imgCache.computeIfAbsent(cacheKey, ignore ->
    288                 ImageProvider.createPaddedIcon(getImageIcon().getImage(), iconSize));
     287        BufferedImage image = imgCache.get(cacheKey);
     288        if (image == null) {
     289            image = ImageProvider.createPaddedIcon(getImageIcon().getImage(), iconSize);
     290            imgCache.put(cacheKey, image);
     291        }
    289292        return new ImageIcon(image);
    290293    }
Note: See TracChangeset for help on using the changeset viewer.