summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorVishnu Nair <vishnun@google.com>2021-07-19 23:28:49 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-19 23:28:49 +0000
commitae457baeff874229948b33e045d617edfb13ee31 (patch)
tree7632abd91a848542a19861a27ee2b272c0845e6f /core/java
parent513b4646d3a0ec5f1a5bf7b6a6fac2f3aa9fbcff (diff)
parent861ba140a11ebcb413ee9f81534cf4e42bd2ccfd (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.java12
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);
}