8080246: JNLP app cannot be launched due to deadlock
Reviewed-by: serb, vdrozdov
This commit is contained in:
parent
4411bdd3cc
commit
225ca2617b
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user