Merge "SurfaceView: Update transform hint only if the view is visible" into sc-dev am: 861ba140a1 am: 23d898fb78

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15302836

Change-Id: Id5eada4be69cf8c5597b99a58a811c172ac3db7d
This commit is contained in:
Vishnu Nair
2021-07-19 23:38:29 +00:00
committed by Automerger Merge Worker

View File

@@ -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);
}