diff options
| author | 2018-11-09 17:30:47 +0800 | |
|---|---|---|
| committer | 2018-11-09 17:35:07 +0800 | |
| commit | 52ea28e05982d98ffcfe0311b9ac191f596779e8 (patch) | |
| tree | 22bd1f30863082f333018621c02148a9026afe55 | |
| parent | b2117bbc3aa853cd7c3db3878be52e2137f7f3df (diff) | |
Fix system crash in Atms.notifyKeyguardFlagsChanged.
The crash happened when the external display removed during relayout and post
message to notify keyguard flags changed for updating transition on
this display, and then got NULL activiy display after message received.
Add a null check in notifyKeyguardFlagsChanged to fix this crash.
Bug: 119285175
Test: All existing tests passed.
Change-Id: I1768b1485d20973049fc92f97dcaccde31510499
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityTaskManagerService.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 3359eac880c7..791b2af8a5f2 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -5657,8 +5657,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { // We might change the visibilities here, so prepare an empty app transition which // might be overridden later if we actually change visibilities. - final DisplayWindowController dwc = mStackSupervisor.getActivityDisplay(displayId) - .getWindowContainerController(); + final ActivityDisplay activityDisplay = + mStackSupervisor.getActivityDisplay(displayId); + if (activityDisplay == null) { + return; + } + final DisplayWindowController dwc = activityDisplay.getWindowContainerController(); final boolean wasTransitionSet = dwc.getPendingAppTransition() != TRANSIT_NONE; if (!wasTransitionSet) { dwc.prepareAppTransition(TRANSIT_NONE, false /* alwaysKeepCurrent */); |