diff options
| author | 2020-06-16 11:47:07 -0700 | |
|---|---|---|
| committer | 2020-06-16 11:47:07 -0700 | |
| commit | c34aea875a9b868c0654e294a3256cdb051e2d8f (patch) | |
| tree | 23526cc42dc5a31af26fee989888a8482fc31fd2 | |
| parent | 55c4e431698375b49f46ae499b8872a4b0d570a7 (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.java | 11 |
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); } /** |