Make WindowContainer surfaces container layers by default.
This reverts commit f6ef18334b4b90f025fa0ece969c2ce2f92221b1.
Reason for revert: ag/6227549 fixes underlying issue
Change-Id: Id1456529ef0009f8e28575ef591d9559c43db4a5
Fixes: 122561221
Test: go/wm-smoke
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index e0ae4e3..38d2f34 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -400,7 +400,7 @@
final IWindowManager wm = WindowManagerGlobal.getWindowManagerService();
mRootSurfaceControl = new SurfaceControl.Builder(surfaceSession)
- .setContainerLayer(true)
+ .setContainerLayer()
.setParent(mSurfaceView.getSurfaceControl())
.setName(DISPLAY_NAME)
.build();
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 1212df0..e5db44e 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -489,7 +489,16 @@
}
mWidth = width;
mHeight = height;
- return this;
+ // set this as a buffer layer since we are specifying a buffer size.
+ return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK);
+ }
+
+ /**
+ * Set the initial size of the controlled surface's buffers in pixels.
+ */
+ private void unsetBufferSize() {
+ mWidth = 0;
+ mHeight = 0;
}
/**
@@ -607,16 +616,11 @@
* Color layers will not have an associated BufferQueue and will instead always render a
* solid color (that is, solid before plane alpha). Currently that color is black.
*
- * @param isColorLayer Whether to create a color layer.
* @hide
*/
- public Builder setColorLayer(boolean isColorLayer) {
- if (isColorLayer) {
- mFlags |= FX_SURFACE_DIM;
- } else {
- mFlags &= ~FX_SURFACE_DIM;
- }
- return this;
+ public Builder setColorLayer() {
+ unsetBufferSize();
+ return setFlags(FX_SURFACE_DIM, FX_SURFACE_MASK);
}
private boolean isColorLayerSet() {
@@ -629,16 +633,11 @@
* 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.
* @hide
*/
- public Builder setContainerLayer(boolean isContainerLayer) {
- if (isContainerLayer) {
- mFlags |= FX_SURFACE_CONTAINER;
- } else {
- mFlags &= ~FX_SURFACE_CONTAINER;
- }
- return this;
+ public Builder setContainerLayer() {
+ unsetBufferSize();
+ return setFlags(FX_SURFACE_CONTAINER, FX_SURFACE_MASK);
}
private boolean isContainerLayerSet() {
@@ -646,7 +645,7 @@
}
/**
- * Set 'Surface creation flags' such as {@link HIDDEN}, {@link SECURE}.
+ * Set 'Surface creation flags' such as {@link #HIDDEN}, {@link #SECURE}.
*
* TODO: Finish conversion to individual builder methods?
* @param flags The combined flags
@@ -656,6 +655,11 @@
mFlags = flags;
return this;
}
+
+ private Builder setFlags(int flags, int mask) {
+ mFlags = (mFlags & ~mask) | flags;
+ return this;
+ }
}
/**
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 9f0800f..fe9aa23 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -33,7 +33,6 @@
import android.graphics.RenderNode;
import android.os.Build;
import android.os.Handler;
-import android.os.IBinder;
import android.os.Looper;
import android.os.SystemClock;
import android.util.AttributeSet;
@@ -588,7 +587,7 @@
mBackgroundControl = new SurfaceControl.Builder(mSurfaceSession)
.setName("Background for -" + name)
.setOpaque(true)
- .setColorLayer(true)
+ .setColorLayer()
.setParent(mSurfaceControl)
.build();