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

Side by Side 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 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.ui.display; 5 package org.chromium.ui.display;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.content.ComponentCallbacks; 8 import android.content.ComponentCallbacks;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.res.Configuration; 10 import android.content.res.Configuration;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 public void stopAccurateListening() { 105 public void stopAccurateListening() {
106 --mAccurateCount; 106 --mAccurateCount;
107 assert mAccurateCount >= 0; 107 assert mAccurateCount >= 0;
108 } 108 }
109 109
110 // ComponentCallbacks implementation: 110 // ComponentCallbacks implementation:
111 111
112 @Override 112 @Override
113 public void onConfigurationChanged(Configuration newConfig) { 113 public void onConfigurationChanged(Configuration newConfig) {
114 updateDeviceDisplayInfo(); 114 updateDeviceDisplayInfo();
115 mIdMap.get(mMainSdkDisplayId).updateFromDisplay( 115 ((DisplayAndroidImpl) mIdMap.get(mMainSdkDisplayId)).updateFromDispl ay(
116 getDefaultDisplayForContext(getContext())); 116 getDefaultDisplayForContext(getContext()));
117 } 117 }
118 118
119 @Override 119 @Override
120 public void onLowMemory() { 120 public void onLowMemory() {
121 } 121 }
122 } 122 }
123 123
124 /** 124 /**
125 * DisplayListenerBackendImpl implements DisplayListenerBackend 125 * DisplayListenerBackendImpl implements DisplayListenerBackend
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId); 164 DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId);
165 if (displayAndroid == null) return; 165 if (displayAndroid == null) return;
166 166
167 if (mNativePointer != 0) nativeRemoveDisplay(mNativePointer, sdkDisp layId); 167 if (mNativePointer != 0) nativeRemoveDisplay(mNativePointer, sdkDisp layId);
168 mIdMap.remove(sdkDisplayId); 168 mIdMap.remove(sdkDisplayId);
169 } 169 }
170 170
171 @Override 171 @Override
172 public void onDisplayChanged(int sdkDisplayId) { 172 public void onDisplayChanged(int sdkDisplayId) {
173 updateDeviceDisplayInfo(); 173 updateDeviceDisplayInfo();
174 DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId); 174 DisplayAndroidImpl displayAndroid = (DisplayAndroidImpl) mIdMap.get( sdkDisplayId);
175 if (displayAndroid != null) { 175 if (displayAndroid != null) {
176 displayAndroid.updateFromDisplay(getDisplayManager().getDisplay( sdkDisplayId)); 176 displayAndroid.updateFromDisplay(getDisplayManager().getDisplay( sdkDisplayId));
177 } 177 }
178 } 178 }
179 } 179 }
180 180
181 private static DisplayAndroidManager sDisplayAndroidManager; 181 private static DisplayAndroidManager sDisplayAndroidManager;
182 182
183 // Real displays on Android start at ID 0, so to avoid any overlap, start vi rtual displays at
184 // a much higher number.
185 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
186
183 private long mNativePointer; 187 private long mNativePointer;
184 private int mMainSdkDisplayId; 188 private int mMainSdkDisplayId;
185 private SparseArray<DisplayAndroid> mIdMap; 189 private SparseArray<DisplayAndroid> mIdMap;
186 private DisplayListenerBackend mBackend; 190 private DisplayListenerBackend mBackend;
191 private int mNextVirtualDisplayId = VIRTUAL_DISPLAY_ID_BEGIN;
187 192
188 @SuppressFBWarnings("LI_LAZY_INIT_UPDATE_STATIC") 193 @SuppressFBWarnings("LI_LAZY_INIT_UPDATE_STATIC")
189 /* package */ static DisplayAndroidManager getInstance() { 194 /* package */ static DisplayAndroidManager getInstance() {
190 if (sDisplayAndroidManager == null) { 195 if (sDisplayAndroidManager == null) {
191 // Split between creation and initialization to allow for calls 196 // Split between creation and initialization to allow for calls
192 // from DisplayAndroid to DisplayAndroidManager during initialize(). 197 // from DisplayAndroid to DisplayAndroidManager during initialize().
193 sDisplayAndroidManager = new DisplayAndroidManager(); 198 sDisplayAndroidManager = new DisplayAndroidManager();
194 sDisplayAndroidManager.initialize(); 199 sDisplayAndroidManager.initialize();
195 } 200 }
196 return sDisplayAndroidManager; 201 return sDisplayAndroidManager;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 /* package */ void startAccurateListening() { 276 /* package */ void startAccurateListening() {
272 mBackend.startAccurateListening(); 277 mBackend.startAccurateListening();
273 } 278 }
274 279
275 /* package */ void stopAccurateListening() { 280 /* package */ void stopAccurateListening() {
276 mBackend.stopAccurateListening(); 281 mBackend.stopAccurateListening();
277 } 282 }
278 283
279 private DisplayAndroid addDisplay(Display display) { 284 private DisplayAndroid addDisplay(Display display) {
280 int sdkDisplayId = display.getDisplayId(); 285 int sdkDisplayId = display.getDisplayId();
281 DisplayAndroid displayAndroid = new DisplayAndroid(display); 286 DisplayAndroidImpl displayAndroid = new DisplayAndroidImpl(display);
282 mIdMap.put(sdkDisplayId, displayAndroid); 287 mIdMap.put(sdkDisplayId, displayAndroid);
283 288
284 displayAndroid.updateFromDisplay(display); 289 displayAndroid.updateFromDisplay(display);
285 return displayAndroid; 290 return displayAndroid;
286 } 291 }
287 292
293 /* 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.
294 return mNextVirtualDisplayId++;
295 }
296
297 /* package */ void addVirtualDisplay(VirtualDisplayAndroid display) {
298 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.
299 }
300
301 /* package */ void removeVirtualDisplay(VirtualDisplayAndroid display) {
302 DisplayAndroid displayAndroid = mIdMap.get(display.getDisplayId());
303 assert displayAndroid == display;
304
305 if (mNativePointer != 0) nativeRemoveDisplay(mNativePointer, display.get DisplayId());
306 mIdMap.remove(display.getDisplayId());
307 }
308
288 /* package */ void updateDisplayOnNativeSide(DisplayAndroid displayAndroid) { 309 /* package */ void updateDisplayOnNativeSide(DisplayAndroid displayAndroid) {
289 if (mNativePointer == 0) return; 310 if (mNativePointer == 0) return;
290 nativeUpdateDisplay(mNativePointer, displayAndroid.getSdkDisplayId(), 311 nativeUpdateDisplay(mNativePointer, displayAndroid.getDisplayId(),
291 displayAndroid.getPhysicalDisplayWidth(), displayAndroid.getPhys icalDisplayHeight(), 312 displayAndroid.getPhysicalDisplayWidth(), displayAndroid.getPhys icalDisplayHeight(),
292 displayAndroid.getDisplayWidth(), displayAndroid.getDisplayHeigh t(), 313 displayAndroid.getDisplayWidth(), displayAndroid.getDisplayHeigh t(),
293 displayAndroid.getDipScale(), displayAndroid.getRotationDegrees( ), 314 displayAndroid.getDipScale(), displayAndroid.getRotationDegrees( ),
294 displayAndroid.getBitsPerPixel(), displayAndroid.getBitsPerCompo nent()); 315 displayAndroid.getBitsPerPixel(), displayAndroid.getBitsPerCompo nent());
295 } 316 }
296 317
297 private native void nativeUpdateDisplay(long nativeDisplayAndroidManager, in t sdkDisplayId, 318 private native void nativeUpdateDisplay(long nativeDisplayAndroidManager, in t sdkDisplayId,
298 int physicalWidth, int physicalHeight, int width, int height, float dipScale, 319 int physicalWidth, int physicalHeight, int width, int height, float dipScale,
299 int rotationDegrees, int bitsPerPixel, int bitsPerComponent); 320 int rotationDegrees, int bitsPerPixel, int bitsPerComponent);
300 private native void nativeRemoveDisplay(long nativeDisplayAndroidManager, in t sdkDisplayId); 321 private native void nativeRemoveDisplay(long nativeDisplayAndroidManager, in t sdkDisplayId);
301 private native void nativeSetPrimaryDisplayId( 322 private native void nativeSetPrimaryDisplayId(
302 long nativeDisplayAndroidManager, int sdkDisplayId); 323 long nativeDisplayAndroidManager, int sdkDisplayId);
303 } 324 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698