From 3ff201a71394945fa000742a6419b830ecf8ea8a Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Thu, 9 Jun 2022 09:09:56 +0000 Subject: Fix the problem that the turn_screen_on Activity does not draw. A phone call came when the screen was off, displayState may change from Display.STATE_OFF to STATE_ON before registerDisplayListener, which causes ViewRootImpl.mAttachInfo.mDisplayState of InCallActivity to remain Display.STATE_OFF, which causes performDraw to return directly. So we should update ViewRootImpl.mAttachInfo.mDisplayState after registerDisplayListener. Bug: 235446909 Change-Id: I60b2da453da0ac5c4df6e5a1040defe4bfe726ec Merged-In: I60b2da453da0ac5c4df6e5a1040defe4bfe726ec --- core/java/android/view/ViewRootImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index a2ff69e15915..d779b4965d4e 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1035,7 +1035,6 @@ public final class ViewRootImpl implements ViewParent, if (mView == null) { mView = view; - mAttachInfo.mDisplayState = mDisplay.getState(); mViewLayoutDirectionInitial = mView.getRawLayoutDirection(); mFallbackEventHandler.setView(view); mWindowAttributes.copyFrom(attrs); @@ -1229,6 +1228,9 @@ public final class ViewRootImpl implements ViewParent, } registerListeners(); + // We should update mAttachInfo.mDisplayState after registerDisplayListener + // because displayState might be changed before registerDisplayListener. + mAttachInfo.mDisplayState = mDisplay.getState(); if ((res & WindowManagerGlobal.ADD_FLAG_USE_BLAST) != 0) { mUseBLASTAdapter = true; } -- cgit v1.2.3-59-g8ed1b