[Android] Remove unnecesary binder calls.

Rather than going through the WindowManager and Display to get
DisplayMetrics, use the instance hanging off the context. This saves
several extra IPCs and reduces time in these functions during startup by
~20ms.

NOTRY=true

Review URL: https://chromiumcodereview.appspot.com/16093031

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204079 0039d316-1c4b-4281-b951-d872f2087c98
parent 380ff0d6
...@@ -7,7 +7,6 @@ package org.chromium.ui.gfx; ...@@ -7,7 +7,6 @@ package org.chromium.ui.gfx;
import android.content.Context; import android.content.Context;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.os.Build; import android.os.Build;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Display; import android.view.Display;
import android.view.WindowManager; import android.view.WindowManager;
...@@ -25,11 +24,13 @@ import org.chromium.base.JNINamespace; ...@@ -25,11 +24,13 @@ import org.chromium.base.JNINamespace;
@JNINamespace("gfx") @JNINamespace("gfx")
public class DeviceDisplayInfo { public class DeviceDisplayInfo {
private WindowManager mWinManager;
private final Context mAppContext;
private final WindowManager mWinManager;
private DeviceDisplayInfo(Context context) { private DeviceDisplayInfo(Context context) {
Context appContext = context.getApplicationContext(); mAppContext = context.getApplicationContext();
mWinManager = (WindowManager) appContext.getSystemService(Context.WINDOW_SERVICE); mWinManager = (WindowManager) mAppContext.getSystemService(Context.WINDOW_SERVICE);
} }
/** /**
...@@ -114,24 +115,12 @@ public class DeviceDisplayInfo { ...@@ -114,24 +115,12 @@ public class DeviceDisplayInfo {
return getMetrics().density; return getMetrics().density;
} }
/**
* @return Display refresh rate in frames per second.
*/
@CalledByNative
public double getRefreshRate() {
double result = getDisplay().getRefreshRate();
// Sanity check.
return (result >= 61 || result < 30) ? 0 : result;
}
private Display getDisplay() { private Display getDisplay() {
return mWinManager.getDefaultDisplay(); return mWinManager.getDefaultDisplay();
} }
private DisplayMetrics getMetrics() { private DisplayMetrics getMetrics() {
DisplayMetrics metrics = new DisplayMetrics(); return mAppContext.getResources().getDisplayMetrics();
getDisplay().getMetrics(metrics);
return metrics;
} }
/** /**
......
...@@ -58,13 +58,6 @@ double DeviceDisplayInfo::GetDIPScale() { ...@@ -58,13 +58,6 @@ double DeviceDisplayInfo::GetDIPScale() {
return static_cast<double>(result); return static_cast<double>(result);
} }
double DeviceDisplayInfo::GetRefreshRate() {
JNIEnv* env = AttachCurrentThread();
jdouble result =
Java_DeviceDisplayInfo_getRefreshRate(env, j_device_info_.obj());
return static_cast<double>(result);
}
// static // static
bool DeviceDisplayInfo::RegisterDeviceDisplayInfo(JNIEnv* env) { bool DeviceDisplayInfo::RegisterDeviceDisplayInfo(JNIEnv* env) {
return RegisterNativesImpl(env); return RegisterNativesImpl(env);
......
...@@ -37,9 +37,6 @@ class UI_EXPORT DeviceDisplayInfo { ...@@ -37,9 +37,6 @@ class UI_EXPORT DeviceDisplayInfo {
// (1.0 is 160dpi, 0.75 is 120dpi, 2.0 is 320dpi). // (1.0 is 160dpi, 0.75 is 120dpi, 2.0 is 320dpi).
double GetDIPScale(); double GetDIPScale();
// Returns display refresh rate in number of frames per second.
double GetRefreshRate();
// Registers methods with JNI and returns true if succeeded. // Registers methods with JNI and returns true if succeeded.
static bool RegisterDeviceDisplayInfo(JNIEnv* env); static bool RegisterDeviceDisplayInfo(JNIEnv* env);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment