Merge changes from topic "fw_container"

* changes:
  DO NOT MERGE Set ContainerLayer for buffer-less surface
  DO NOT MERGE: WM: Restrict SC Builder to set a single surface type
  Implement construction of container layers
This commit is contained in:
Treehugger Robot
2018-12-20 22:45:18 +00:00
committed by Gerrit Code Review
4 changed files with 44 additions and 4 deletions

View File

@@ -267,6 +267,13 @@ public class SurfaceControl implements Parcelable {
*/
public static final int FX_SURFACE_DIM = 0x00020000;
/**
* Surface creation flag: Creates a container surface.
* This surface will have no buffers and will only be used
* as a container for other surfaces, or for its InputInfo.
*/
public static final int FX_SURFACE_CONTAINER = 0x00080000;
/**
* Mask used for FX values above.
*
@@ -523,13 +530,38 @@ public class SurfaceControl implements Parcelable {
*/
public Builder setColorLayer(boolean isColorLayer) {
if (isColorLayer) {
mFlags |= FX_SURFACE_DIM;
setFlags(FX_SURFACE_DIM, FX_SURFACE_MASK);
} else {
mFlags &= ~FX_SURFACE_DIM;
setBufferLayer();
}
return this;
}
/**
* Indicates whether a 'ContainerLayer' is to be constructed.
*
* Container layers will not be rendered in any fashion and instead are used
* as a parent of renderable layers.
*
* @param isContainerLayer Whether to create a container layer.
*/
public Builder setContainerLayer(boolean isContainerLayer) {
if (isContainerLayer) {
setFlags(FX_SURFACE_CONTAINER, FX_SURFACE_MASK);
} else {
setBufferLayer();
}
return this;
}
/**
* Indicates whether a buffer layer is to be constructed.
*
*/
public Builder setBufferLayer() {
return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK);
}
/**
* Set 'Surface creation flags' such as {@link HIDDEN}, {@link SECURE}.
*
@@ -540,6 +572,11 @@ public class SurfaceControl implements Parcelable {
mFlags = flags;
return this;
}
private Builder setFlags(int flags, int mask) {
mFlags = (mFlags & ~mask) | flags;
return this;
}
}
/**