diff options
author | Chavi Weingarten <chaviw@google.com> | 2020-05-28 21:36:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-28 21:36:55 +0000 |
commit | 9fa6e684b752fece544fe24aad92ea144a94f2c7 (patch) | |
tree | b1ea37fa1c5192df7f92a4c4c35ce97f447a55b2 | |
parent | 831fce06efe73f5a59a93a4211bf7b73bfa3047a (diff) | |
parent | 0a947d95901688be1b864247dea942b5dff2697c (diff) |
Merge "Check for null parent when migrating SurfaceControl" into rvc-dev
-rw-r--r-- | services/core/java/com/android/server/wm/WindowContainer.java | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index a1fbb597533f..3fe8229e2ec2 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -399,7 +399,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } void createSurfaceControl(boolean force) { - setSurfaceControl(makeSurface().build()); + setInitialSurfaceControlProperties(makeSurface().build()); + } + + private void setInitialSurfaceControlProperties(SurfaceControl surfaceControl) { + setSurfaceControl(surfaceControl); getPendingTransaction().show(mSurfaceControl); onSurfaceShown(getPendingTransaction()); updateSurfacePosition(); @@ -423,7 +427,16 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< // Clear the last position so the new SurfaceControl will get correct position mLastSurfacePosition.set(0, 0); - createSurfaceControl(false /* force */); + final SurfaceControl.Builder b = mWmService.makeSurfaceBuilder(null) + .setContainerLayer() + .setName(getName()); + + setInitialSurfaceControlProperties(b.build()); + + // If parent is null, the layer should be placed offscreen so reparent to null. Otherwise, + // set to the available parent. + t.reparent(mSurfaceControl, mParent == null ? null : mParent.getSurfaceControl()); + if (mLastRelativeToLayer != null) { t.setRelativeLayer(mSurfaceControl, mLastRelativeToLayer, mLastLayer); } else { |