diff options
| author | 2021-07-19 23:17:07 +0000 | |
|---|---|---|
| committer | 2021-07-19 23:17:07 +0000 | |
| commit | 861ba140a11ebcb413ee9f81534cf4e42bd2ccfd (patch) | |
| tree | 8e0969f1e626a3d6c17ac0fdb7f6f45732c8c216 | |
| parent | ba314fbb8579080e4958d9f6b4fe6171a2ad4fa0 (diff) | |
| parent | bc9be8e428ceef47a5356ce6a6fc493d1689bfc7 (diff) | |
Merge "SurfaceView: Update transform hint only if the view is visible" into sc-dev
| -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); } |