| java.lang.Object sun.awt.image.SurfaceManager sun.awt.image.VolatileSurfaceManager
All known Subclasses: sun.awt.image.BufImgVolatileSurfaceManager,
VolatileSurfaceManager | abstract public class VolatileSurfaceManager extends SurfaceManager implements DisplayChangedListener(Code) | | 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.
|
Field Summary | |
protected Object | context Context for extra initialization parameters. | protected boolean | lostSurface Tracks loss of surface contents; queriable by user to see whether
contents need to be restored. | protected SurfaceData | sdAccel The accelerated SurfaceData object. | protected SurfaceData | sdBackup The software-based SurfaceData object. | protected SurfaceData | sdCurrent The current SurfaceData object. | protected SurfaceData | sdPrevious A record-keeping object. | protected SunVolatileImage | vImg A reference to the VolatileImage whose contents are being managed. |
Method Summary | |
public void | acceleratedSurfaceLost() 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. | public boolean | contentsLost() Returns true if rendering data was lost since the last validate call. | public void | displayChanged() 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. | public void | flush() Releases any associated hardware memory for this image by
calling flush on sdAccel. | protected SurfaceData | getBackupSurface() 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. | public ImageCapabilities | getCapabilities(GraphicsConfiguration gc) | public SurfaceData | getPrimarySurfaceData() | abstract protected SurfaceData | initAcceleratedSurface() Creates a new accelerated surface that is compatible with the
current GraphicsConfiguration. | public void | initContents() Set contents of the current SurfaceData to default state (i.e. | public void | initialize() This init function is separate from the constructor because the
things we are doing here necessitate the object's existence. | abstract protected boolean | isAccelerationEnabled() Returns true if acceleration is enabled. | protected boolean | isConfigValid(GraphicsConfiguration gc) Called by validate() to see whether the GC passed in is ok for
rendering to. | public void | paletteChanged() 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). | protected void | restoreAcceleratedSurface() Restore sdAccel in case it was lost. | public SurfaceData | restoreContents() Called from a SurfaceData object, indicating that our
accelerated surface has been lost and should be restored (perhaps
using a backup system memory surface). | public int | validate(GraphicsConfiguration gc) Get the image ready for rendering. |
context | protected Object context(Code) | | Context for extra initialization parameters.
|
lostSurface | protected boolean lostSurface(Code) | | Tracks loss of surface contents; queriable by user to see whether
contents need to be restored.
|
sdAccel | protected SurfaceData sdAccel(Code) | | The accelerated SurfaceData object.
|
sdBackup | protected SurfaceData sdBackup(Code) | | 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).
|
sdCurrent | protected SurfaceData sdCurrent(Code) | | The current SurfaceData object.
|
sdPrevious | protected SurfaceData sdPrevious(Code) | | 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.
|
acceleratedSurfaceLost | public void acceleratedSurfaceLost()(Code) | | 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.
|
displayChanged | public void displayChanged()(Code) | | 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.
|
flush | public void flush()(Code) | | 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.
|
getBackupSurface | protected SurfaceData getBackupSurface()(Code) | | 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.
|
getPrimarySurfaceData | public SurfaceData getPrimarySurfaceData()(Code) | | |
initAcceleratedSurface | abstract protected SurfaceData initAcceleratedSurface()(Code) | | 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).
|
initContents | public void initContents()(Code) | | Set contents of the current SurfaceData to default state (i.e. clear
the background).
|
initialize | public void initialize()(Code) | | 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.
|
isAccelerationEnabled | abstract protected boolean isAccelerationEnabled()(Code) | | Returns true if acceleration is enabled. If not, we simply use the
backup SurfaceData object and return quickly from most methods
in this class.
|
isConfigValid | protected boolean isConfigValid(GraphicsConfiguration gc)(Code) | | 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.
|
paletteChanged | public void paletteChanged()(Code) | | 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).
|
restoreAcceleratedSurface | protected void restoreAcceleratedSurface()(Code) | | Restore sdAccel in case it was lost. Do nothing in this
default case; platform-specific implementations may do more in
this situation as appropriate.
|
restoreContents | public SurfaceData restoreContents()(Code) | | 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.
|
validate | public int validate(GraphicsConfiguration gc)(Code) | | 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.
|
|
|