ViewRootImpl: Call surface destroy callback after layout pass
If a requestLayout happens on a child view after the measure pass, before the layout pass then the child view will not layout. This can happen if a view calls requestLayout during measure or during SurfaceView surface destroyed callback. This fix addresses the second scenario by moving the callback to after the layout pass. Bug: 159183008 Test: Repro steps in bug Test: go/wm-smoke Change-Id: Ie2794a3751c99cabf6e07445c91159e35eeb1729
This commit is contained in:
@@ -2724,7 +2724,6 @@ public final class ViewRootImpl implements ViewParent,
|
||||
mAttachInfo.mThreadedRenderer.isEnabled()) {
|
||||
mAttachInfo.mThreadedRenderer.destroy();
|
||||
}
|
||||
notifySurfaceDestroyed();
|
||||
} else if ((surfaceReplaced
|
||||
|| surfaceSizeChanged || windowRelayoutWasForced || colorModeChanged)
|
||||
&& mSurfaceHolder == null
|
||||
@@ -2955,6 +2954,10 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
}
|
||||
|
||||
if (surfaceDestroyed) {
|
||||
notifySurfaceDestroyed();
|
||||
}
|
||||
|
||||
if (triggerGlobalLayoutListener) {
|
||||
mAttachInfo.mRecomputeGlobalAttributes = false;
|
||||
mAttachInfo.mTreeObserver.dispatchOnGlobalLayout();
|
||||
|
||||
Reference in New Issue
Block a user