Search in sources :

Example 1 with GDIWindowSurfaceData

use of sun.java2d.windows.GDIWindowSurfaceData in project jdk8u_jdk by JetBrains.

the class D3DScreenUpdateManager method removeGdiSurface.

/**
     * Remove the gdi surface corresponding to the passed d3dw surface
     * from list of the cached gdi surfaces.
     *
     * @param d3dw surface for which associated gdi surface is to be removed
     */
private void removeGdiSurface(final D3DWindowSurfaceData d3dw) {
    if (gdiSurfaces != null) {
        GDIWindowSurfaceData gdisd = gdiSurfaces.get(d3dw);
        if (gdisd != null) {
            gdisd.invalidate();
            gdiSurfaces.remove(d3dw);
        }
    }
}
Also used : GDIWindowSurfaceData(sun.java2d.windows.GDIWindowSurfaceData)

Example 2 with GDIWindowSurfaceData

use of sun.java2d.windows.GDIWindowSurfaceData in project jdk8u_jdk by JetBrains.

the class D3DScreenUpdateManager method getGdiSurface.

/**
     * Creates (or returns a cached one) gdi surface for the same peer as
     * the passed d3dw surface has.
     *
     * @param d3dw surface used as key into the cache
     * @return gdi window surface associated with the d3d window surfaces' peer
     */
private synchronized SurfaceData getGdiSurface(D3DWindowSurfaceData d3dw) {
    if (gdiSurfaces == null) {
        gdiSurfaces = new HashMap<D3DWindowSurfaceData, GDIWindowSurfaceData>();
    }
    GDIWindowSurfaceData gdisd = gdiSurfaces.get(d3dw);
    if (gdisd == null) {
        gdisd = GDIWindowSurfaceData.createData(d3dw.getPeer());
        gdiSurfaces.put(d3dw, gdisd);
    }
    return gdisd;
}
Also used : GDIWindowSurfaceData(sun.java2d.windows.GDIWindowSurfaceData) D3DWindowSurfaceData(sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData)

Example 3 with GDIWindowSurfaceData

use of sun.java2d.windows.GDIWindowSurfaceData in project jdk8u_jdk by JetBrains.

the class D3DVolatileSurfaceManager method handleVItoScreenOp.

/**
     * If the destination surface's peer can potentially handle accelerated
     * on-screen rendering then it is likely that the condition which resulted
     * in VI to Screen operation is temporary, so this method sets the
     * restore countdown in hope that the on-screen accelerated rendering will
     * resume. In the meantime the backup surface of the VISM will be used.
     *
     * The countdown is needed because otherwise we may never break out
     * of "do { vi.validate()..} while(vi.lost)" loop since validate() could
     * restore the source surface every time and it will get lost again on the
     * next copy attempt, and we would never get a chance to use the backup
     * surface. By using the countdown we allow the backup surface to be used
     * while the screen surface gets sorted out, or if it for some reason can
     * never be restored.
     *
     * If the destination surface's peer could never do accelerated onscreen
     * rendering then the acceleration for the SurfaceManager associated with
     * the source surface is disabled forever.
     */
static void handleVItoScreenOp(SurfaceData src, SurfaceData dst) {
    if (src instanceof D3DSurfaceData && dst instanceof GDIWindowSurfaceData) {
        D3DSurfaceData d3dsd = (D3DSurfaceData) src;
        SurfaceManager mgr = SurfaceManager.getManager((Image) d3dsd.getDestination());
        if (mgr instanceof D3DVolatileSurfaceManager) {
            D3DVolatileSurfaceManager vsm = (D3DVolatileSurfaceManager) mgr;
            if (vsm != null) {
                d3dsd.setSurfaceLost(true);
                GDIWindowSurfaceData wsd = (GDIWindowSurfaceData) dst;
                WComponentPeer p = wsd.getPeer();
                if (D3DScreenUpdateManager.canUseD3DOnScreen(p, (Win32GraphicsConfig) p.getGraphicsConfiguration(), p.getBackBuffersNum())) {
                    // 10 is only chosen to be greater than the number of
                    // times a sane person would call validate() inside
                    // a validation loop, and to reduce thrashing between
                    // accelerated and backup surfaces
                    vsm.setRestoreCountdown(10);
                } else {
                    vsm.setAccelerationEnabled(false);
                }
            }
        }
    }
}
Also used : GDIWindowSurfaceData(sun.java2d.windows.GDIWindowSurfaceData) VolatileSurfaceManager(sun.awt.image.VolatileSurfaceManager) SurfaceManager(sun.awt.image.SurfaceManager) WComponentPeer(sun.awt.windows.WComponentPeer)

Aggregations

GDIWindowSurfaceData (sun.java2d.windows.GDIWindowSurfaceData)3 SurfaceManager (sun.awt.image.SurfaceManager)1 VolatileSurfaceManager (sun.awt.image.VolatileSurfaceManager)1 WComponentPeer (sun.awt.windows.WComponentPeer)1 D3DWindowSurfaceData (sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData)1