Need to synchronize around adjustSize as it can lead to a flush

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@536 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Charlie Groves
2008-06-10 23:33:58 +00:00
parent d67c0bd7b7
commit ef4e27cdd0
@@ -2,15 +2,15 @@
package com.threerings.media.image; package com.threerings.media.image;
import static com.threerings.media.Log.log;
import java.awt.Component; import java.awt.Component;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Transparency; import java.awt.Transparency;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@@ -21,11 +21,8 @@ import com.samskivert.util.LRUHashMap;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.samskivert.util.Throttle; import com.samskivert.util.Throttle;
import com.samskivert.util.Tuple; import com.samskivert.util.Tuple;
import com.threerings.resource.ResourceManager; import com.threerings.resource.ResourceManager;
import static com.threerings.media.Log.log;
/** /**
* Provides a single point of access for image retrieval and caching. This does not include * Provides a single point of access for image retrieval and caching. This does not include
* any tie-in to runtime adjustments to control caching and mirage creation. * any tie-in to runtime adjustments to control caching and mirage creation.
@@ -129,7 +126,9 @@ public class ImageManager
{ {
log.info("Clearing image manager cache."); log.info("Clearing image manager cache.");
_ccache.clear(); synchronized (_ccache) {
_ccache.clear();
}
} }
/** /**
@@ -472,7 +471,9 @@ public class ImageManager
try { try {
BufferedImage cimage = ImageUtil.recolorImage(_source, zations); BufferedImage cimage = ImageUtil.recolorImage(_source, zations);
_colorized.add(new Tuple<Colorization[], BufferedImage>(zations, cimage)); _colorized.add(new Tuple<Colorization[], BufferedImage>(zations, cimage));
cache.adjustSize((int)ImageUtil.getEstimatedMemoryUsage(cimage)); synchronized (cache) {
cache.adjustSize((int)ImageUtil.getEstimatedMemoryUsage(cimage));
}
return cimage; return cimage;
} catch (Exception re) { } catch (Exception re) {