Stop using raw display size except in window manager.
We don't actually need the raw size in these places.
The logical size is good enough.
Starting to move dependencies on surface flinger
and window manager out of the Display class.
Change-Id: I2065bee8e5bf7f42c5a452dd1e8479e40ebb0d37
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index ce49268..6136d8f 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -416,14 +416,8 @@
outMetrics.ydpi = outMetrics.noncompatYdpi = mDpiY;
}
- static IWindowManager getWindowManager() {
- synchronized (sStaticInit) {
- if (sWindowManager == null) {
- sWindowManager = IWindowManager.Stub.asInterface(
- ServiceManager.getService("window"));
- }
- return sWindowManager;
- }
+ private static IWindowManager getWindowManager() {
+ return WindowManagerImpl.getWindowManagerService();
}
/*
@@ -449,6 +443,5 @@
private static final Object sStaticInit = new Object();
private static boolean sInitialized = false;
- private static IWindowManager sWindowManager;
}
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 107f1cc..3082976 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.graphics.Point;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.DisplayMetrics;
@@ -277,15 +278,17 @@
mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f);
mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
- final Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
// Size of the screen in bytes, in ARGB_8888 format
- mMaximumDrawingCacheSize = 4 * display.getRawWidth() * display.getRawHeight();
+ final Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
+ final Point size = new Point();
+ display.getRealSize(size);
+ mMaximumDrawingCacheSize = 4 * size.x * size.y;
mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
if (!sHasPermanentMenuKeySet) {
- IWindowManager wm = Display.getWindowManager();
+ IWindowManager wm = WindowManagerImpl.getWindowManagerService();
try {
sHasPermanentMenuKey = !wm.hasSystemNavBar() && !wm.hasNavigationBar();
sHasPermanentMenuKeySet = true;
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index cd6c502..e8bd618 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -331,7 +331,7 @@
if (!mInitialized) {
try {
InputMethodManager imm = InputMethodManager.getInstance(mainLooper);
- IWindowManager windowManager = Display.getWindowManager();
+ IWindowManager windowManager = WindowManagerImpl.getWindowManagerService();
sWindowSession = windowManager.openSession(
imm.getClient(), imm.getInputContext());
float animatorScale = windowManager.getAnimationScale(2);
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index dedee97..bd95cdb 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -21,6 +21,7 @@
import android.content.res.Configuration;
import android.opengl.ManagedEGLContext;
import android.os.IBinder;
+import android.os.ServiceManager;
import android.os.SystemProperties;
import android.util.AndroidRuntimeException;
import android.util.Log;
@@ -111,6 +112,7 @@
public static final int ADD_PERMISSION_DENIED = -8;
private static WindowManagerImpl sDefaultWindowManager;
+ private static IWindowManager sWindowManagerService;
private final WindowManagerState mState;
private final Window mParentWindow;
@@ -135,6 +137,16 @@
}
}
+ public static IWindowManager getWindowManagerService() {
+ synchronized (WindowManagerImpl.class) {
+ if (sWindowManagerService == null) {
+ sWindowManagerService = IWindowManager.Stub.asInterface(
+ ServiceManager.getService("window"));
+ }
+ return sWindowManagerService;
+ }
+ }
+
public WindowManagerImpl makeLocal(Window parentWindow) {
return new WindowManagerImpl(mState, parentWindow, parentWindow.getCompatibilityInfo());
}