diff options
| author | Vishnu Nair <vishnun@google.com> | 2021-07-19 23:28:49 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-19 23:28:49 +0000 |
| commit | ae457baeff874229948b33e045d617edfb13ee31 (patch) | |
| tree | 7632abd91a848542a19861a27ee2b272c0845e6f /core/java | |
| parent | 513b4646d3a0ec5f1a5bf7b6a6fac2f3aa9fbcff (diff) | |
| parent | 861ba140a11ebcb413ee9f81534cf4e42bd2ccfd (diff) | |
Merge "SurfaceView: Update transform hint only if the view is visible" into sc-dev am: 861ba140a1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15302836
Change-Id: I32755b9750b1c8f5b64c0f125a5f977f3f331af0
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/SurfaceView.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 4f2cf6d9001e..f21d855ddcf9 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -1081,7 +1081,8 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall || mWindowSpaceTop != mLocation[1]; final boolean layoutSizeChanged = getWidth() != mScreenRect.width() || getHeight() != mScreenRect.height(); - final boolean hintChanged = viewRoot.getSurfaceTransformHint() != mTransformHint; + final boolean hintChanged = (viewRoot.getSurfaceTransformHint() != mTransformHint) + && mRequestedVisible; if (creating || formatChanged || sizeChanged || visibleChanged || (mUseAlpha && alphaChanged) || windowVisibleChanged || @@ -1227,7 +1228,9 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall // Therefore, we must explicitly recreate the {@link Surface} in these // cases. if (mUseBlastAdapter) { - mSurface.transferFrom(mBlastBufferQueue.createSurfaceWithHandle()); + if (mBlastBufferQueue != null) { + mSurface.transferFrom(mBlastBufferQueue.createSurfaceWithHandle()); + } } else { mSurface.createFrom(mSurfaceControl); } @@ -1237,7 +1240,10 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall private void setBufferSize(Transaction transaction) { if (mUseBlastAdapter) { mBlastSurfaceControl.setTransformHint(mTransformHint); - mBlastBufferQueue.update(mBlastSurfaceControl, mSurfaceWidth, mSurfaceHeight, mFormat); + if (mBlastBufferQueue != null) { + mBlastBufferQueue.update(mBlastSurfaceControl, mSurfaceWidth, mSurfaceHeight, + mFormat); + } } else { transaction.setBufferSize(mSurfaceControl, mSurfaceWidth, mSurfaceHeight); } |
