Not to create a key every time we do a lookup. Only create a key when we
know we're adding a new entry. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2637 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSet.java,v 1.54 2003/05/31 00:56:38 mdb Exp $
|
// $Id: TileSet.java,v 1.55 2003/06/04 22:00:59 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile;
|
package com.threerings.media.tile;
|
||||||
|
|
||||||
@@ -191,13 +191,15 @@ public abstract class TileSet
|
|||||||
*/
|
*/
|
||||||
public Tile getTile (int tileIndex, Colorization[] zations)
|
public Tile getTile (int tileIndex, Colorization[] zations)
|
||||||
{
|
{
|
||||||
Tile.Key key = new Tile.Key(this, tileIndex, zations);
|
|
||||||
Tile tile = null;
|
Tile tile = null;
|
||||||
|
|
||||||
// first look in the active set; if it's in use by anyone or in
|
// first look in the active set; if it's in use by anyone or in
|
||||||
// the cache, it will be in the active set
|
// the cache, it will be in the active set
|
||||||
synchronized (_atiles) {
|
synchronized (_atiles) {
|
||||||
WeakReference wref = (WeakReference)_atiles.get(key);
|
_key.tileSet = this;
|
||||||
|
_key.tileIndex = tileIndex;
|
||||||
|
_key.zations = zations;
|
||||||
|
WeakReference wref = (WeakReference)_atiles.get(_key);
|
||||||
if (wref != null) {
|
if (wref != null) {
|
||||||
tile = (Tile)wref.get();
|
tile = (Tile)wref.get();
|
||||||
}
|
}
|
||||||
@@ -206,10 +208,10 @@ public abstract class TileSet
|
|||||||
// if it's not in the active set, it's not in memory; so load it
|
// if it's not in the active set, it's not in memory; so load it
|
||||||
if (tile == null) {
|
if (tile == null) {
|
||||||
tile = createTile();
|
tile = createTile();
|
||||||
tile.key = key;
|
tile.key = new Tile.Key(this, tileIndex, zations);
|
||||||
initTile(tile, tileIndex, zations);
|
initTile(tile, tileIndex, zations);
|
||||||
synchronized (_atiles) {
|
synchronized (_atiles) {
|
||||||
_atiles.put(key, new WeakReference(tile));
|
_atiles.put(tile.key, new WeakReference(tile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,6 +419,10 @@ public abstract class TileSet
|
|||||||
/** A map containing weak references to all "active" tiles. */
|
/** A map containing weak references to all "active" tiles. */
|
||||||
protected static HashMap _atiles = new HashMap();
|
protected static HashMap _atiles = new HashMap();
|
||||||
|
|
||||||
|
/** A key used to look things up in the cache without creating
|
||||||
|
* craploads of keys unduly. */
|
||||||
|
protected static Tile.Key _key = new Tile.Key(null, 0, null);
|
||||||
|
|
||||||
/** Throttle our cache status logging to once every 30 seconds. */
|
/** Throttle our cache status logging to once every 30 seconds. */
|
||||||
protected static Throttle _cacheStatThrottle = new Throttle(1, 30000L);
|
protected static Throttle _cacheStatThrottle = new Throttle(1, 30000L);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user