summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Craig Mautner <cmautner@google.com> 2014-09-14 18:01:39 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2014-09-14 18:01:40 +0000
commitf1f886f3ae58fc3b3bd50cc0dce806bb42582dbc (patch)
tree6d76f4aec7d77a0bfe8741139a86589f9b61fb1e
parentca68f2ca454d51e2a902625800c432604d33bb4e (diff)
parent1a70a16b64620e416ae8353960c6af6c40274e7a (diff)
Merge "Add null checks for quickly disappearing Displays" into lmp-dev
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index b8261a43f9a9..c48adc499917 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -350,6 +350,9 @@ public final class ActivityStackSupervisor implements DisplayListener {
for (int displayNdx = displays.length - 1; displayNdx >= 0; --displayNdx) {
final int displayId = displays[displayNdx].getDisplayId();
ActivityDisplay activityDisplay = new ActivityDisplay(displayId);
+ if (activityDisplay.mDisplay == null) {
+ throw new IllegalStateException("Default Display does not exist");
+ }
mActivityDisplays.put(displayId, activityDisplay);
}
@@ -3261,6 +3264,10 @@ public final class ActivityStackSupervisor implements DisplayListener {
newDisplay = mActivityDisplays.get(displayId) == null;
if (newDisplay) {
ActivityDisplay activityDisplay = new ActivityDisplay(displayId);
+ if (activityDisplay.mDisplay == null) {
+ Slog.w(TAG, "Display " + displayId + " gone before initialization complete");
+ return;
+ }
mActivityDisplays.put(displayId, activityDisplay);
}
}
@@ -3902,8 +3909,14 @@ public final class ActivityStackSupervisor implements DisplayListener {
ActivityDisplay() {
}
+ // After instantiation, check that mDisplay is not null before using this. The alternative
+ // is for this to throw an exception if mDisplayManager.getDisplay() returns null.
ActivityDisplay(int displayId) {
- init(mDisplayManager.getDisplay(displayId));
+ final Display display = mDisplayManager.getDisplay(displayId);
+ if (display == null) {
+ return;
+ }
+ init(display);
}
void init(Display display) {