Subclasses have 2 main responsibilities:
| Modifier and Type | Class and Description |
|---|---|
| public static class |
| Modifier and Type | Field and Description |
|---|---|
| private SurfaceData | |
| private StateTracker | |
| private static boolean | |
| private static int | |
| private int | |
| private StateTracker | |
| private int | |
| public static SurfaceDataProxy | UNCACHED
This instance is for cases where a caching implementation determines that a particular source image will never need to be cached - either the source SurfaceData was of an incompatible type, or it was in an UNTRACKABLE state or some other factor is discovered that permanently prevents acceleration or caching. |
| private boolean |
| Access | Constructor and Description |
|---|---|
| public | SurfaceDataProxy()
Create a SurfaceData proxy manager that attempts to create and cache a variant copy of the source SurfaceData after the default threshold number of attempts to copy from the STABLE source. |
| public | SurfaceDataProxy(int threshold)
Create a SurfaceData proxy manager that attempts to create and cache a variant copy of the source SurfaceData after the specified threshold number of attempts to copy from the STABLE source. |
| Modifier and Type | Method and Description |
|---|---|
| protected void | activateDisplayListener()
This method should be called from subclasses which create cached SurfaceData objects that depend on the current properties of the display. |
| public void | displayChanged()
Implements sun. Invoked when the display mode has changed. |
| public boolean | flush(boolean deaccelerated)
Implements sun. Flush all cached resources as per the FlushableCacheData interface. |
| public synchronized void | flush()
Actively flushes (drops and invalidates) the cached surface so that it can be reclaimed quickly. |
| public StateTracker | getRetryTracker(SurfaceData srcData)
If the subclass is unable to validate or create a cached SurfaceData then this method will be used to get a StateTracker object that will indicate when to attempt to validate the surface again. |
| public void | invalidate()
Sets the valid state to false so that the next time this proxy is fetched to generate a replacement SurfaceData, the code in SurfaceData knows to replace the proxy first. |
| public boolean | isAccelerated()
Returns true iff this SurfaceData proxy is still valid and if it has a currently cached replacement that is also valid and current. |
| public static boolean | |
| public abstract boolean | isSupportedOperation(SurfaceData srcData, int txtype, CompositeType comp, Color bgColor)
Determine if an alternate form for the srcData is needed and appropriate from the given operational parameters. |
| public boolean | isValid()
Returns true iff this SurfaceData proxy is still the best way to control caching of the given source on the given destination. |
| public void | paletteChanged()
Implements sun. Invoked when the palette has changed. |
| public SurfaceData | replaceData(SurfaceData srcData, int txtype, CompositeType comp, Color bgColor)
This method attempts to replace the srcData with a cached version. |
| public void | updateSurfaceData(SurfaceData srcData, SurfaceData dstData, int w, int h)
This is the default implementation for updating the cached SurfaceData from the source (primary) SurfaceData. |
| public void | updateSurfaceDataBg(SurfaceData srcData, SurfaceData dstData, int w, int h, Color bgColor)
This is an alternate implementation for updating the cached SurfaceData from the source (primary) SurfaceData using a background color for transparent pixels. |
| public abstract SurfaceData | validateSurfaceData(SurfaceData srcData, SurfaceData cachedData, int w, int h)
Construct an alternate form of the given SurfaceData. |
| cachedSD | back to summary |
|---|---|
| private SurfaceData cachedSD | |
| cacheTracker | back to summary |
|---|---|
| private StateTracker cacheTracker | |
| cachingAllowed | back to summary |
|---|---|
| private static boolean cachingAllowed | |
| defaultThreshold | back to summary |
|---|---|
| private static int defaultThreshold | |
| numtries | back to summary |
|---|---|
| private int numtries | |
| srcTracker | back to summary |
|---|---|
| private StateTracker srcTracker | |
| threshold | back to summary |
|---|---|
| private int threshold | |
| UNCACHED | back to summary |
|---|---|
| public static SurfaceDataProxy UNCACHED This instance is for cases where a caching implementation determines that a particular source image will never need to be cached - either the source SurfaceData was of an incompatible type, or it was in an UNTRACKABLE state or some other factor is discovered that permanently prevents acceleration or caching. This class optimally implements NOP variants of all necessary methods to avoid caching with a minimum of fuss. | |
| valid | back to summary |
|---|---|
| private boolean valid | |
| SurfaceDataProxy | back to summary |
|---|---|
| public SurfaceDataProxy() Create a SurfaceData proxy manager that attempts to create and cache a variant copy of the source SurfaceData after the default threshold number of attempts to copy from the STABLE source. | |
| SurfaceDataProxy | back to summary |
|---|---|
| public SurfaceDataProxy(int threshold) Create a SurfaceData proxy manager that attempts to create and cache a variant copy of the source SurfaceData after the specified threshold number of attempts to copy from the STABLE source. | |
| activateDisplayListener | back to summary |
|---|---|
| protected void activateDisplayListener() This method should be called from subclasses which create cached SurfaceData objects that depend on the current properties of the display. | |
| displayChanged | back to summary |
|---|---|
| public void displayChanged() Implements sun. Invoked when the display mode has changed. This method will invalidate and drop the internal cachedSD object. | |
| flush | back to summary |
|---|---|
| public boolean flush(boolean deaccelerated) Implements sun. Flush all cached resources as per the FlushableCacheData interface. The deaccelerated parameter indicates if the flush is happening because the associated surface is no longer being accelerated (for instance the acceleration priority is set below the threshold needed for acceleration). Returns a boolean that indicates if the cached object is no longer needed and should be removed from the cache. | |
| flush | back to summary |
|---|---|
| public synchronized void flush() Actively flushes (drops and invalidates) the cached surface so that it can be reclaimed quickly. | |
| getRetryTracker | back to summary |
|---|---|
| public StateTracker getRetryTracker(SurfaceData srcData) If the subclass is unable to validate or create a cached SurfaceData then this method will be used to get a StateTracker object that will indicate when to attempt to validate the surface again. Subclasses may return trackers which count down an ever increasing threshold to provide hysteresis on creating surfaces during low memory conditions. The default implementation just waits another "threshold" number of accesses before trying again. | |
| invalidate | back to summary |
|---|---|
| public void invalidate() Sets the valid state to false so that the next time this proxy is fetched to generate a replacement SurfaceData, the code in SurfaceData knows to replace the proxy first. | |
| isAccelerated | back to summary |
|---|---|
| public boolean isAccelerated() Returns true iff this SurfaceData proxy is still valid and if it has a currently cached replacement that is also valid and current. | |
| isCachingAllowed | back to summary |
|---|---|
| public static boolean isCachingAllowed() | |
| isSupportedOperation | back to summary |
|---|---|
| public abstract boolean isSupportedOperation(SurfaceData srcData, int txtype, CompositeType comp, Color bgColor) Determine if an alternate form for the srcData is needed and appropriate from the given operational parameters. | |
| isValid | back to summary |
|---|---|
| public boolean isValid() Returns true iff this SurfaceData proxy is still the best way to control caching of the given source on the given destination. | |
| paletteChanged | back to summary |
|---|---|
| public void paletteChanged() Implements sun. Invoked when the palette has changed. | |
| replaceData | back to summary |
|---|---|
| public SurfaceData replaceData(SurfaceData srcData, int txtype, CompositeType comp, Color bgColor) This method attempts to replace the srcData with a cached version. It relies on the subclass to determine if the cached version will be useful given the operational parameters. This method checks any preexisting cached copy for being "up to date" and tries to update it if it is stale or non-existent and the appropriate number of accesses have occurred since it last was stale. An outline of the process is as follows:
| |
| updateSurfaceData | back to summary |
|---|---|
| public void updateSurfaceData(SurfaceData srcData, SurfaceData dstData, int w, int h) This is the default implementation for updating the cached SurfaceData from the source (primary) SurfaceData. A simple Blit is used to copy the pixels from the source to the destination SurfaceData. A subclass can override this implementation if a more complex operation is required to update its cached copies. | |
| updateSurfaceDataBg | back to summary |
|---|---|
| public void updateSurfaceDataBg(SurfaceData srcData, SurfaceData dstData, int w, int h, Color bgColor) This is an alternate implementation for updating the cached SurfaceData from the source (primary) SurfaceData using a background color for transparent pixels. A simple BlitBg is used to copy the pixels from the source to the destination SurfaceData with the specified bgColor. A subclass can override the normal updateSurfaceData method and call this implementation instead if it wants to use color keying for bitmask images. | |
| validateSurfaceData | back to summary |
|---|---|
| public abstract SurfaceData validateSurfaceData(SurfaceData srcData, SurfaceData cachedData, int w, int h) Construct an alternate form of the given SurfaceData. The contents of the returned SurfaceData may be undefined since the calling code will take care of updating the contents with a subsequent call to updateSurfaceData. If the method returns null then there was a problem with allocating the accelerated surface. The getRetryTracker() method will be called to track when to attempt another revalidation. | |
| Modifier and Type | Field and Description |
|---|---|
| private int |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public synchronized boolean | isCurrent()
Implements sun. Returns true iff the contents of the complex data of the associated StateTrackable object have not changed since the time that this StateTracker was returned from its getStateTracker() method. |
| countdown | back to summary |
|---|---|
| private int countdown | |
| CountdownTracker | back to summary |
|---|---|
| public CountdownTracker(int threshold) | |
| isCurrent | back to summary |
|---|---|
| public synchronized boolean isCurrent() Implements sun. Doc from sun. Returns true iff the contents of the complex data of the associated StateTrackable object have not changed since the time that this StateTracker was returned from its getStateTracker() method. | |