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

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

Issue 2523273002: Implement Virtual Display class for Android. (Closed)
Patch Set: Address comments Created 4 years, 1 month 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
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(),

Powered by Google App Engine
This is Rietveld 408576698