summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityThread.java10
-rw-r--r--core/java/android/hardware/display/DisplayManager.java9
2 files changed, 17 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 0438e77..2cdb086 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1553,10 +1553,20 @@ public final class ActivityThread {
if (dm != null && !forceUpdate) {
return dm;
}
+
+ DisplayManager displayManager = DisplayManager.getInstance();
+ if (displayManager == null) {
+ // may be null early in system startup
+ dm = new DisplayMetrics();
+ dm.setToDefaults();
+ return dm;
+ }
+
if (dm == null) {
dm = new DisplayMetrics();
mDisplayMetrics.put(ci, dm);
}
+
CompatibilityInfoHolder cih = new CompatibilityInfoHolder();
cih.set(ci);
Display d = WindowManagerImpl.getDefault().makeCompatible(cih).getDefaultDisplay();
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 640044b..dc79710 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -45,14 +45,19 @@ public final class DisplayManager {
/**
* Gets an instance of the display manager.
- * @return The display manager instance.
+ *
+ * @return The display manager instance, may be null early in system startup
+ * before the display manager has been fully initialized.
+ *
* @hide
*/
public static DisplayManager getInstance() {
synchronized (DisplayManager.class) {
if (sInstance == null) {
IBinder b = ServiceManager.getService(Context.DISPLAY_SERVICE);
- sInstance = new DisplayManager(IDisplayManager.Stub.asInterface(b));
+ if (b != null) {
+ sInstance = new DisplayManager(IDisplayManager.Stub.asInterface(b));
+ }
}
return sInstance;
}