diff options
| author | 2021-09-28 21:06:48 +0000 | |
|---|---|---|
| committer | 2021-09-28 21:06:48 +0000 | |
| commit | b866c0323ab4d75828231dd8082aa5c3a109a0be (patch) | |
| tree | 38e32ea81b5fdded9bb70586f4c3ff5d71550cd2 | |
| parent | 42ca299bd4745ab9be157f8fc40a89ba64015327 (diff) | |
| parent | 9bbf9cd7277acafca9f68dde124d84aea8b28341 (diff) | |
Merge "ViewRootImpl: Update opaque flag if SurfaceControl changes from relayout" into sc-qpr1-dev am: 8dc8182ad0 am: 9bbf9cd727
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15934803
Change-Id: Ic659035d5ed05e2927d672f52b52ee31e87ee9d4
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 20888f75b55f..c45b27a8a2c2 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -2864,8 +2864,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() @@ -2900,9 +2905,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++; } @@ -7895,7 +7898,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) @@ -7911,7 +7915,7 @@ public final class ViewRootImpl implements ViewParent, opaque = true; } - if (mIsSurfaceOpaque == opaque) { + if (!forceUpdate && mIsSurfaceOpaque == opaque) { return; } |