diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 15 |
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) { |