Chromium Code Reviews| 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 6175f940303e80ee9df4afbc5c65cb358a2d988d..ffa765436b6d4461fd4f54f9cafa2c4cea5eee9d 100644 |
| --- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java |
| +++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroidManager.java |
| @@ -112,7 +112,7 @@ import org.chromium.ui.gfx.DeviceDisplayInfo; |
| @Override |
| public void onConfigurationChanged(Configuration newConfig) { |
| updateDeviceDisplayInfo(); |
| - mIdMap.get(mMainSdkDisplayId).updateFromDisplay( |
| + ((DisplayAndroidImpl) mIdMap.get(mMainSdkDisplayId)).updateFromDisplay( |
| getDefaultDisplayForContext(getContext())); |
| } |
| @@ -171,7 +171,7 @@ import org.chromium.ui.gfx.DeviceDisplayInfo; |
| @Override |
| public void onDisplayChanged(int sdkDisplayId) { |
| updateDeviceDisplayInfo(); |
| - DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId); |
| + DisplayAndroidImpl displayAndroid = (DisplayAndroidImpl) mIdMap.get(sdkDisplayId); |
| if (displayAndroid != null) { |
| displayAndroid.updateFromDisplay(getDisplayManager().getDisplay(sdkDisplayId)); |
| } |
| @@ -180,10 +180,15 @@ import org.chromium.ui.gfx.DeviceDisplayInfo; |
| private static DisplayAndroidManager sDisplayAndroidManager; |
| + // Real displays on Android start at ID 0, so to avoid any overlap, start virtual displays at |
| + // a much higher number. |
| + private static final int VIRTUAL_DISPLAY_ID_BEGIN = 1000; |
|
boliu
2016/11/28 15:53:31
I need we need to double check how android generat
mthiesse
2016/11/28 19:16:42
Android effectively does what I'm doing here, but
|
| + |
| private long mNativePointer; |
| private int mMainSdkDisplayId; |
| private SparseArray<DisplayAndroid> mIdMap; |
| private DisplayListenerBackend mBackend; |
| + private int mNextVirtualDisplayId = VIRTUAL_DISPLAY_ID_BEGIN; |
| @SuppressFBWarnings("LI_LAZY_INIT_UPDATE_STATIC") |
| /* package */ static DisplayAndroidManager getInstance() { |
| @@ -278,16 +283,32 @@ import org.chromium.ui.gfx.DeviceDisplayInfo; |
| private DisplayAndroid addDisplay(Display display) { |
| int sdkDisplayId = display.getDisplayId(); |
| - DisplayAndroid displayAndroid = new DisplayAndroid(display); |
| + DisplayAndroidImpl displayAndroid = new DisplayAndroidImpl(display); |
| mIdMap.put(sdkDisplayId, displayAndroid); |
| displayAndroid.updateFromDisplay(display); |
| return displayAndroid; |
| } |
| + /* package */ int getNextVirtualDisplayId() { |
|
boliu
2016/11/28 15:53:31
nit: maybe generating this ID can happen in addVir
mthiesse
2016/11/28 19:16:42
Done.
|
| + return mNextVirtualDisplayId++; |
| + } |
| + |
| + /* package */ void addVirtualDisplay(VirtualDisplayAndroid display) { |
| + mIdMap.put(display.getDisplayId(), display); |
|
boliu
2016/11/28 15:53:31
should this immediately create the native side dis
mthiesse
2016/11/28 19:16:42
Done.
|
| + } |
| + |
| + /* package */ void removeVirtualDisplay(VirtualDisplayAndroid display) { |
| + DisplayAndroid displayAndroid = mIdMap.get(display.getDisplayId()); |
| + assert displayAndroid == display; |
| + |
| + if (mNativePointer != 0) nativeRemoveDisplay(mNativePointer, display.getDisplayId()); |
| + mIdMap.remove(display.getDisplayId()); |
| + } |
| + |
| /* package */ void updateDisplayOnNativeSide(DisplayAndroid displayAndroid) { |
| if (mNativePointer == 0) return; |
| - nativeUpdateDisplay(mNativePointer, displayAndroid.getSdkDisplayId(), |
| + nativeUpdateDisplay(mNativePointer, displayAndroid.getDisplayId(), |
| displayAndroid.getPhysicalDisplayWidth(), displayAndroid.getPhysicalDisplayHeight(), |
| displayAndroid.getDisplayWidth(), displayAndroid.getDisplayHeight(), |
| displayAndroid.getDipScale(), displayAndroid.getRotationDegrees(), |