FileDocCategorySizeDatePackage
StrictModeFlash.javaAPI DocAndroid 5.1 API3584Thu Mar 12 22:22:42 GMT 2015com.android.server.wm

StrictModeFlash

public class StrictModeFlash extends Object

Fields Summary
private static final String
TAG
private final android.view.SurfaceControl
mSurfaceControl
private final android.view.Surface
mSurface
private int
mLastDW
private int
mLastDH
private boolean
mDrawNeeded
private final int
mThickness
Constructors Summary
public StrictModeFlash(android.view.Display display, android.view.SurfaceSession session)


         
        SurfaceControl ctrl = null;
        try {
            ctrl = new SurfaceControl(session, "StrictModeFlash",
                1, 1, PixelFormat.TRANSLUCENT, SurfaceControl.HIDDEN);
            ctrl.setLayerStack(display.getLayerStack());
            ctrl.setLayer(WindowManagerService.TYPE_LAYER_MULTIPLIER * 101);  // one more than Watermark? arbitrary.
            ctrl.setPosition(0, 0);
            ctrl.show();
            mSurface.copyFrom(ctrl);
        } catch (OutOfResourcesException e) {
        }
        mSurfaceControl = ctrl;
        mDrawNeeded = true;
    
Methods Summary
private voiddrawIfNeeded()

        if (!mDrawNeeded) {
            return;
        }
        mDrawNeeded = false;
        final int dw = mLastDW;
        final int dh = mLastDH;

        Rect dirty = new Rect(0, 0, dw, dh);
        Canvas c = null;
        try {
            c = mSurface.lockCanvas(dirty);
        } catch (IllegalArgumentException e) {
        } catch (Surface.OutOfResourcesException e) {
        }
        if (c == null) {
            return;
        }

        // Top
        c.clipRect(new Rect(0, 0, dw, mThickness), Region.Op.REPLACE);
        c.drawColor(Color.RED);
        // Left
        c.clipRect(new Rect(0, 0, mThickness, dh), Region.Op.REPLACE);
        c.drawColor(Color.RED);
        // Right
        c.clipRect(new Rect(dw - mThickness, 0, dw, dh), Region.Op.REPLACE);
        c.drawColor(Color.RED);
        // Bottom
        c.clipRect(new Rect(0, dh - mThickness, dw, dh), Region.Op.REPLACE);
        c.drawColor(Color.RED);

        mSurface.unlockCanvasAndPost(c);
    
voidpositionSurface(int dw, int dh)

        if (mLastDW == dw && mLastDH == dh) {
            return;
        }
        mLastDW = dw;
        mLastDH = dh;
        mSurfaceControl.setSize(dw, dh);
        mDrawNeeded = true;
    
public voidsetVisibility(boolean on)

        if (mSurfaceControl == null) {
            return;
        }
        drawIfNeeded();
        if (on) {
            mSurfaceControl.show();
        } else {
            mSurfaceControl.hide();
        }