Apply synced relayout if we have FLAG_WINDOW_VISIBILITY_CHANGED
The client needs to call relayout to get the valid surface if
- mFirst,
- mViewVisibility != viewVisibility,
- mNewSurfaceNeeded, or
- mAppVisibilityChanged.
We didn't cover mNewSurfaceNeeded or mAppVisibilityChanged previously.
All of them are covered by FLAG_WINDOW_VISIBILITY_CHANGED.
Bug: 244521023
Bug: 161810301
Test: 1. Enable LOCAL_LAYOUT
2. Open Camera and double press the power button.
See if the preview screen of Camera become blank.
Change-Id: I37fb8ffc9063b72bf3abba5d29fc2f750e7fc64f
This commit is contained in:
@@ -8085,7 +8085,8 @@ public final class ViewRootImpl implements ViewParent,
|
||||
final int measuredWidth = mView.getMeasuredWidth();
|
||||
final int measuredHeight = mView.getMeasuredHeight();
|
||||
final boolean relayoutAsync;
|
||||
if (LOCAL_LAYOUT && !mFirst && viewVisibility == mViewVisibility
|
||||
if (LOCAL_LAYOUT
|
||||
&& (mViewFrameInfo.flags & FrameInfo.FLAG_WINDOW_VISIBILITY_CHANGED) == 0
|
||||
&& mWindowAttributes.type != TYPE_APPLICATION_STARTING
|
||||
&& mSyncSeqId <= mLastSyncSeqId
|
||||
&& winConfigFromAm.diff(winConfigFromWm, false /* compareUndefined */) == 0) {
|
||||
|
||||
Reference in New Issue
Block a user