diff --git a/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java b/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java index 96a475e1c68..8130198e0d2 100644 --- a/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java +++ b/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java @@ -651,16 +651,20 @@ public abstract class SunToolkit extends Toolkit @SuppressWarnings("deprecation") - static final SoftCache imgCache = new SoftCache(); + static final SoftCache fileImgCache = new SoftCache(); + + @SuppressWarnings("deprecation") + static final SoftCache urlImgCache = new SoftCache(); static Image getImageFromHash(Toolkit tk, URL url) { checkPermissions(url); - synchronized (imgCache) { - Image img = (Image)imgCache.get(url); + synchronized (urlImgCache) { + String key = url.toString(); + Image img = (Image)urlImgCache.get(key); if (img == null) { try { img = tk.createImage(new URLImageSource(url)); - imgCache.put(url, img); + urlImgCache.put(key, img); } catch (Exception e) { } } @@ -671,12 +675,12 @@ public abstract class SunToolkit extends Toolkit static Image getImageFromHash(Toolkit tk, String filename) { checkPermissions(filename); - synchronized (imgCache) { - Image img = (Image)imgCache.get(filename); + synchronized (fileImgCache) { + Image img = (Image)fileImgCache.get(filename); if (img == null) { try { img = tk.createImage(new FileImageSource(filename)); - imgCache.put(filename, img); + fileImgCache.put(filename, img); } catch (Exception e) { } } @@ -696,28 +700,29 @@ public abstract class SunToolkit extends Toolkit protected Image getImageWithResolutionVariant(String fileName, String resolutionVariantName) { - synchronized (imgCache) { + synchronized (fileImgCache) { Image image = getImageFromHash(this, fileName); if (image instanceof MultiResolutionImage) { return image; } Image resolutionVariant = getImageFromHash(this, resolutionVariantName); image = createImageWithResolutionVariant(image, resolutionVariant); - imgCache.put(fileName, image); + fileImgCache.put(fileName, image); return image; } } protected Image getImageWithResolutionVariant(URL url, URL resolutionVariantURL) { - synchronized (imgCache) { + synchronized (urlImgCache) { Image image = getImageFromHash(this, url); if (image instanceof MultiResolutionImage) { return image; } Image resolutionVariant = getImageFromHash(this, resolutionVariantURL); image = createImageWithResolutionVariant(image, resolutionVariant); - imgCache.put(url, image); + String key = url.toString(); + urlImgCache.put(key, image); return image; } } @@ -828,8 +833,13 @@ public abstract class SunToolkit extends Toolkit return null; } - protected static boolean imageCached(Object key) { - return imgCache.containsKey(key); + protected static boolean imageCached(String fileName) { + return fileImgCache.containsKey(fileName); + } + + protected static boolean imageCached(URL url) { + String key = url.toString(); + return urlImgCache.containsKey(key); } protected static boolean imageExists(String filename) {