diff options
| author | 2014-09-14 18:01:39 +0000 | |
|---|---|---|
| committer | 2014-09-14 18:01:40 +0000 | |
| commit | f1f886f3ae58fc3b3bd50cc0dce806bb42582dbc (patch) | |
| tree | 6d76f4aec7d77a0bfe8741139a86589f9b61fb1e | |
| parent | ca68f2ca454d51e2a902625800c432604d33bb4e (diff) | |
| parent | 1a70a16b64620e416ae8353960c6af6c40274e7a (diff) | |
Merge "Add null checks for quickly disappearing Displays" into lmp-dev
| -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) { |