summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robert Carr <racarr@google.com> 2020-06-16 11:47:07 -0700
committer Robert Carr <racarr@google.com> 2020-06-16 11:47:07 -0700
commitc34aea875a9b868c0654e294a3256cdb051e2d8f (patch)
tree23526cc42dc5a31af26fee989888a8482fc31fd2
parent55c4e431698375b49f46ae499b8872a4b0d570a7 (diff)
SurfaceView: Check ViewRootImpl non-null
This call to updateRelativeZ may be triggered from the RT frame callback which may be triggered after we are detached from the Window and in that case will be null. If we are detached we are also going invisible so there is no need to set a relativeZ. Bug: 158706756 Test: Existing tests pass Change-Id: I46aa824807b7b275e6a015c428fe7467a72ca949
-rw-r--r--core/java/android/view/SurfaceView.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 57f91ed3c0ae..5dd21e2ad915 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -1638,9 +1638,14 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
}
private void updateRelativeZ(Transaction t) {
- SurfaceControl viewRoot = getViewRootImpl().getSurfaceControl();
- t.setRelativeLayer(mBackgroundControl, viewRoot, Integer.MIN_VALUE);
- t.setRelativeLayer(mSurfaceControl, viewRoot, mSubLayer);
+ final ViewRootImpl viewRoot = getViewRootImpl();
+ if (viewRoot == null) {
+ // We were just detached.
+ return;
+ }
+ final SurfaceControl viewRootControl = viewRoot.getSurfaceControl();
+ t.setRelativeLayer(mBackgroundControl, viewRootControl, Integer.MIN_VALUE);
+ t.setRelativeLayer(mSurfaceControl, viewRootControl, mSubLayer);
}
/**