Merge "ViewRootImpl: Update opaque flag if SurfaceControl changes from relayout" into sc-qpr1-dev am: 8dc8182ad0 am: 9bbf9cd727 am: b866c0323a

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

Change-Id: I24fbd39028a3d2bc9da9f19d68017e376409a171
This commit is contained in:
Vishnu Nair
2021-09-28 21:16:44 +00:00
committed by Automerger Merge Worker

View File

@@ -2831,8 +2831,13 @@ public final class ViewRootImpl implements ViewParent,
}
}
final boolean surfaceControlChanged =
(relayoutResult & RELAYOUT_RES_SURFACE_CHANGED)
== RELAYOUT_RES_SURFACE_CHANGED;
if (mSurfaceControl.isValid()) {
updateOpacity(mWindowAttributes, dragResizing);
updateOpacity(mWindowAttributes, dragResizing,
surfaceControlChanged /*forceUpdate */);
}
if (DEBUG_LAYOUT) Log.v(mTag, "relayout: frame=" + frame.toShortString()
@@ -2867,9 +2872,7 @@ public final class ViewRootImpl implements ViewParent,
// RELAYOUT_RES_SURFACE_CHANGED since it should indicate that WMS created a new
// SurfaceControl.
surfaceReplaced = (surfaceGenerationId != mSurface.getGenerationId()
|| (relayoutResult & RELAYOUT_RES_SURFACE_CHANGED)
== RELAYOUT_RES_SURFACE_CHANGED)
&& mSurface.isValid();
|| surfaceControlChanged) && mSurface.isValid();
if (surfaceReplaced) {
mSurfaceSequenceId++;
}
@@ -7891,7 +7894,8 @@ public final class ViewRootImpl implements ViewParent,
return relayoutResult;
}
private void updateOpacity(WindowManager.LayoutParams params, boolean dragResizing) {
private void updateOpacity(WindowManager.LayoutParams params, boolean dragResizing,
boolean forceUpdate) {
boolean opaque = false;
if (!PixelFormat.formatHasAlpha(params.format)
@@ -7907,7 +7911,7 @@ public final class ViewRootImpl implements ViewParent,
opaque = true;
}
if (mIsSurfaceOpaque == opaque) {
if (!forceUpdate && mIsSurfaceOpaque == opaque) {
return;
}