Fix Screen Magnification recursive draw
When invoke the method View#setLayoutParams(), ViewRootImpl will run method ViewRootImpl#performTraversals(). And OnGlobalLayoutListener#onGlobalLayout() will be invoked. When the method View#setLayoutParams() is invoked in OnGlobalLayoutListener#onGlobalLayout(), there will be recursive call. The view will be draw on and on. This situation happen in Screen Magnification. It should remove the listener after work completion. Bug: https://issuetracker.google.com/issues/62613000 Test: use systrace when enter Screen Magnification,and view the "traversal" times. Change-Id: I01b1fcccb8b915ec436fb95f1d30c8ec0c0de0a9 Signed-off-by: gaochong <gaochong@xiaomi.com>
This commit is contained in:
@@ -98,6 +98,8 @@ public class ToggleScreenMagnificationPreferenceFragment extends ToggleFeaturePr
|
|||||||
videoView.setLayoutParams(videoLp);
|
videoView.setLayoutParams(videoLp);
|
||||||
videoView.invalidate();
|
videoView.invalidate();
|
||||||
videoView.start();
|
videoView.start();
|
||||||
|
mVideoBackgroundView.getViewTreeObserver()
|
||||||
|
.removeOnGlobalLayoutListener(mLayoutListener);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user