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

Unified Diff: ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java

Issue 26129009: Cache DeviceDisplayInfo data in shared structure on native side to avoid frequent JNI calls. (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: Updated by review comments. Created 7 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 | « no previous file | ui/gfx/android/device_display_info.h » ('j') | ui/gfx/android/gfx_jni_registrar.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
diff --git a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
index 895d3472ca7bc446f0d3363b0e9d512c1a359433..89325fb96f3d4f4a1a134e63a611b809d89dae04 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
@@ -5,6 +5,8 @@
package org.chromium.ui.gfx;
import android.content.Context;
+import android.content.ComponentCallbacks;
+import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Build;
import android.util.DisplayMetrics;
@@ -124,6 +126,26 @@ public class DeviceDisplayInfo {
return mAppContext.getResources().getConfiguration().smallestScreenWidthDp;
}
+ private void registerListener() {
+ mAppContext.registerComponentCallbacks(
+ new ComponentCallbacks() {
+ @Override
+ public void onConfigurationChanged(Configuration configuration) {
+ updateNativeSharedDisplayInfo();
+ }
+
+ @Override
+ public void onLowMemory() {
+ }
+ });
+ }
+
+ private void updateNativeSharedDisplayInfo() {
+ nativeUpdateSharedDeviceDisplayInfo(getDisplayHeight(),
+ getDisplayWidth(), getBitsPerPixel(), getBitsPerComponent(),
+ getDIPScale(), getSmallestDIPWidth());
+ }
+
private Display getDisplay() {
return mWinManager.getDefaultDisplay();
}
@@ -137,8 +159,20 @@ public class DeviceDisplayInfo {
* @param context A context to use.
* @return DeviceDisplayInfo associated with a given Context.
*/
- @CalledByNative
public static DeviceDisplayInfo create(Context context) {
return new DeviceDisplayInfo(context);
}
+
+ @CalledByNative
+ private static DeviceDisplayInfo createWithListener(Context context) {
+ DeviceDisplayInfo deviceDisplayInfo = new DeviceDisplayInfo(context);
+ deviceDisplayInfo.registerListener();
+ return deviceDisplayInfo;
+ }
+
+ private native void nativeUpdateSharedDeviceDisplayInfo(int displayHeight,
+ int displayWidth, int bitsPerPixel,
+ int bitsPerComponent, double dipScale,
+ int smallestDIPWidth);
+
}
« no previous file with comments | « no previous file | ui/gfx/android/device_display_info.h » ('j') | ui/gfx/android/gfx_jni_registrar.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698