java.lang.Object | ||
↳ | sun.awt.image.SurfaceManager | |
↳ | sun.awt.image.VolatileSurfaceManager |
![]() |
This SurfaceManager variant manages an accelerated volatile surface, if it is possible to create that surface. If there is limited accelerated memory, or if the volatile surface disappears due to an operating system event, the VolatileSurfaceManager will attempt to restore the accelerated surface. If that fails, a system memory surface will be created in its place.
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
context | Context for extra initialization parameters. | ||||||||||
lostSurface | Tracks loss of surface contents; queriable by user to see whether contents need to be restored. | ||||||||||
sdAccel | The accelerated SurfaceData object. | ||||||||||
sdBackup | The software-based SurfaceData object. | ||||||||||
sdCurrent | The current SurfaceData object. | ||||||||||
sdPrevious | A record-keeping object. | ||||||||||
vImg | A reference to the VolatileImage whose contents are being managed. |
Protected Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
If the accelerated surface is the current SurfaceData for this manager,
sets the variable lostSurface to true, which indicates that something
happened to the image under management.
| |||||||||||
Returns true if rendering data was lost since the last validate call.
| |||||||||||
Called from SunGraphicsEnv when there has been a display mode change.
| |||||||||||
Releases any associated hardware memory for this image by
calling flush on sdAccel.
| |||||||||||
Returns an ImageCapabilities object which can be
inquired as to the specific capabilities of this
Image.
| |||||||||||
Returns the main SurfaceData object that "owns" the pixels for
this SurfaceManager.
| |||||||||||
Set contents of the current SurfaceData to default state (i.e.
| |||||||||||
This init function is separate from the constructor because the
things we are doing here necessitate the object's existence.
| |||||||||||
When device palette changes, need to force a new copy
of the image into our hardware cache to update the
color indices of the pixels (indexed mode only).
| |||||||||||
Called from a SurfaceData object, indicating that our
accelerated surface has been lost and should be restored (perhaps
using a backup system memory surface).
| |||||||||||
Get the image ready for rendering.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Creates a software-based surface (of type BufImgSurfaceData).
| |||||||||||
Creates a new accelerated surface that is compatible with the
current GraphicsConfiguration.
| |||||||||||
Returns true if acceleration is enabled.
| |||||||||||
Called by validate() to see whether the GC passed in is ok for
rendering to.
| |||||||||||
Restore sdAccel in case it was lost.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() |
Tracks loss of surface contents; queriable by user to see whether contents need to be restored.
The software-based SurfaceData object. Only create when first asked to (otherwise it is a waste of memory as it will only be used in situations of surface loss).
A record-keeping object. This keeps track of which SurfaceData was in use during the last call to validate(). This lets us see whether the SurfaceData object has changed since then and allows us to return the correct returnCode to the user in the validate() call.
If the accelerated surface is the current SurfaceData for this manager, sets the variable lostSurface to true, which indicates that something happened to the image under management. This variable is used in the validate method to tell the caller that the surface contents need to be restored.
Returns true if rendering data was lost since the last validate call.
Called from SunGraphicsEnv when there has been a display mode change. Note that we simply invalidate hardware surfaces here; we do not attempt to recreate or re-render them. This is to avoid threading conflicts with the native toolkit and associated threads. Instead, we just nullify the old surface data object and wait for a future method in the rendering process to recreate the surface.
Releases any associated hardware memory for this image by calling flush on sdAccel. This method forces a lostSurface situation so any future operations on the image will need to revalidate the image first.
Returns an ImageCapabilities object which can be inquired as to the specific capabilities of this Image. The capabilities object will return true for isAccelerated() if the image has a current and valid SurfaceDataProxy object cached for the specified GraphicsConfiguration parameter.
This class provides a default implementation of the ImageCapabilities that will try to determine if there is an associated SurfaceDataProxy object and if it is up to date, but only works for GraphicsConfiguration objects which implement the ProxiedGraphicsConfig interface defined below. In practice, all configs which can be accelerated are currently implementing that interface.
A null GraphicsConfiguration returns a value based on whether the image is currently accelerated on its default GraphicsConfiguration.
Returns the main SurfaceData object that "owns" the pixels for this SurfaceManager. This SurfaceData is used as the destination surface in a rendering operation and is the most authoritative storage for the current state of the pixels, though other versions might be cached in other locations for efficiency.
Set contents of the current SurfaceData to default state (i.e. clear the background).
This init function is separate from the constructor because the things we are doing here necessitate the object's existence. Otherwise, we end up calling into a subclass' overridden method during construction, before that subclass is completely constructed.
When device palette changes, need to force a new copy of the image into our hardware cache to update the color indices of the pixels (indexed mode only).
Called from a SurfaceData object, indicating that our accelerated surface has been lost and should be restored (perhaps using a backup system memory surface). Returns the newly restored primary SurfaceData object.
Get the image ready for rendering. This method is called to make sure that the accelerated SurfaceData exists and is ready to be used. Users call this method prior to any set of rendering to or from the image, to make sure the image is ready and compatible with the given GraphicsConfiguration. The image may not be "ready" if either we had problems creating it in the first place (e.g., there was no space in vram) or if the surface became lost (e.g., some other app or the OS caused vram surfaces to be removed). Note that we want to return RESTORED in any situation where the SurfaceData is different than it was last time. So whether it's software or hardware, if we have a different SurfaceData object, then the contents have been altered and we must reflect that change to the user.
Creates a software-based surface (of type BufImgSurfaceData). The software representation is only created when needed, which is only during some situation in which the hardware surface cannot be allocated. This allows apps to at least run, albeit more slowly than they would otherwise.
Creates a new accelerated surface that is compatible with the current GraphicsConfiguration. Returns the new accelerated SurfaceData object, or null if the surface creation was not successful. Platform-specific subclasses should initialize an accelerated surface (e.g. a DirectDraw surface on Windows, an OpenGL pbuffer, or an X11 pixmap).
Returns true if acceleration is enabled. If not, we simply use the backup SurfaceData object and return quickly from most methods in this class.
Called by validate() to see whether the GC passed in is ok for rendering to. This generic implementation checks to see whether the GC is either null or is from the same device as the one that this image was created on. Platform- specific implementations may perform other checks as appropriate.
Restore sdAccel in case it was lost. Do nothing in this default case; platform-specific implementations may do more in this situation as appropriate.