Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Unified Diff: ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java

Issue 2420453002: android: Register Display lazily (Closed)
Patch Set: fix typo Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java
diff --git a/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java b/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java
index 96a310dfd809a8616fdf2aeb53aaad408eb5e5b6..dd86c1e152987fb92f81c3f873db1459a87e09d8 100644
--- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java
+++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java
@@ -152,7 +152,8 @@ import org.chromium.ui.gfx.DeviceDisplayInfo;
@Override
public void onDisplayAdded(int sdkDisplayId) {
- addDisplay(getDisplayManager().getDisplay(sdkDisplayId));
+ // DisplayAndroid is added lazily on first use. This is to workaround corner case
+ // bug where DisplayManager.getDisplay(sdkDisplayId) returning null here.
}
@Override
@@ -163,8 +164,10 @@ import org.chromium.ui.gfx.DeviceDisplayInfo;
@Override
public void onDisplayChanged(int sdkDisplayId) {
updateDeviceDisplayInfo();
- mIdMap.get(sdkDisplayId)
- .updateFromDisplay(getDisplayManager().getDisplay(sdkDisplayId));
+ DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId);
+ if (displayAndroid != null) {
+ displayAndroid.updateFromDisplay(getDisplayManager().getDisplay(sdkDisplayId));
+ }
}
}
@@ -204,12 +207,8 @@ import org.chromium.ui.gfx.DeviceDisplayInfo;
private DisplayAndroidManager() {
mIdMap = new SparseArray<>();
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
mBackend = new DisplayListenerBackendImpl();
- for (Display display : getDisplayManager().getDisplays()) {
- addDisplay(display);
- }
} else {
Display display = getDisplayFromContext(getContext());
mBackend = new DisplayListenerAPI16(display.getDisplayId());
@@ -218,8 +217,13 @@ import org.chromium.ui.gfx.DeviceDisplayInfo;
mBackend.startListening();
}
- /* package */ DisplayAndroid getDisplayAndroid(int sdkDisplayId) {
- return mIdMap.get(sdkDisplayId);
+ /* package */ DisplayAndroid getDisplayAndroid(Display display) {
+ int sdkDisplayId = display.getDisplayId();
+ DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId);
+ if (displayAndroid == null) {
+ displayAndroid = addDisplay(display);
+ }
+ return displayAndroid;
}
/* package */ void startAccurateListening() {
@@ -230,8 +234,10 @@ import org.chromium.ui.gfx.DeviceDisplayInfo;
mBackend.stopAccurateListening();
}
- private void addDisplay(Display display) {
+ private DisplayAndroid addDisplay(Display display) {
int sdkDisplayId = display.getDisplayId();
- mIdMap.put(sdkDisplayId, new DisplayAndroid(display));
+ DisplayAndroid displayAndroid = new DisplayAndroid(display);
+ mIdMap.put(sdkDisplayId, displayAndroid);
+ return displayAndroid;
}
}
« no previous file with comments | « ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698