summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author lumark <lumark@google.com> 2018-11-09 17:30:47 +0800
committer lumark <lumark@google.com> 2018-11-09 17:35:07 +0800
commit52ea28e05982d98ffcfe0311b9ac191f596779e8 (patch)
tree22bd1f30863082f333018621c02148a9026afe55
parentb2117bbc3aa853cd7c3db3878be52e2137f7f3df (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.java8
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 */);