Skip to content

Commit a8b9def

Browse files
author
Jeff Brown
committed
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
1 parent fb5549f commit a8b9def

File tree

6 files changed

+31
-18
lines changed

6 files changed

+31
-18
lines changed

core/java/android/view/Display.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -416,14 +416,8 @@ public void getMetricsWithSize(DisplayMetrics outMetrics,
416416
outMetrics.ydpi = outMetrics.noncompatYdpi = mDpiY;
417417
}
418418

419-
static IWindowManager getWindowManager() {
420-
synchronized (sStaticInit) {
421-
if (sWindowManager == null) {
422-
sWindowManager = IWindowManager.Stub.asInterface(
423-
ServiceManager.getService("window"));
424-
}
425-
return sWindowManager;
426-
}
419+
private static IWindowManager getWindowManager() {
420+
return WindowManagerImpl.getWindowManagerService();
427421
}
428422

429423
/*
@@ -449,6 +443,5 @@ static IWindowManager getWindowManager() {
449443

450444
private static final Object sStaticInit = new Object();
451445
private static boolean sInitialized = false;
452-
private static IWindowManager sWindowManager;
453446
}
454447

core/java/android/view/ViewConfiguration.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.content.Context;
2121
import android.content.res.Configuration;
2222
import android.content.res.Resources;
23+
import android.graphics.Point;
2324
import android.os.RemoteException;
2425
import android.provider.Settings;
2526
import android.util.DisplayMetrics;
@@ -277,15 +278,17 @@ private ViewConfiguration(Context context) {
277278
mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f);
278279
mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
279280

280-
final Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
281281
// Size of the screen in bytes, in ARGB_8888 format
282-
mMaximumDrawingCacheSize = 4 * display.getRawWidth() * display.getRawHeight();
282+
final Display display = WindowManagerImpl.getDefault().getDefaultDisplay();
283+
final Point size = new Point();
284+
display.getRealSize(size);
285+
mMaximumDrawingCacheSize = 4 * size.x * size.y;
283286

284287
mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
285288
mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
286289

287290
if (!sHasPermanentMenuKeySet) {
288-
IWindowManager wm = Display.getWindowManager();
291+
IWindowManager wm = WindowManagerImpl.getWindowManagerService();
289292
try {
290293
sHasPermanentMenuKey = !wm.hasSystemNavBar() && !wm.hasNavigationBar();
291294
sHasPermanentMenuKeySet = true;

core/java/android/view/ViewRootImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public static IWindowSession getWindowSession(Looper mainLooper) {
331331
if (!mInitialized) {
332332
try {
333333
InputMethodManager imm = InputMethodManager.getInstance(mainLooper);
334-
IWindowManager windowManager = Display.getWindowManager();
334+
IWindowManager windowManager = WindowManagerImpl.getWindowManagerService();
335335
sWindowSession = windowManager.openSession(
336336
imm.getClient(), imm.getInputContext());
337337
float animatorScale = windowManager.getAnimationScale(2);

core/java/android/view/WindowManagerImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.content.res.Configuration;
2222
import android.opengl.ManagedEGLContext;
2323
import android.os.IBinder;
24+
import android.os.ServiceManager;
2425
import android.os.SystemProperties;
2526
import android.util.AndroidRuntimeException;
2627
import android.util.Log;
@@ -111,6 +112,7 @@ public class WindowManagerImpl implements WindowManager {
111112
public static final int ADD_PERMISSION_DENIED = -8;
112113

113114
private static WindowManagerImpl sDefaultWindowManager;
115+
private static IWindowManager sWindowManagerService;
114116

115117
private final WindowManagerState mState;
116118
private final Window mParentWindow;
@@ -135,6 +137,16 @@ public static WindowManagerImpl getDefault() {
135137
}
136138
}
137139

140+
public static IWindowManager getWindowManagerService() {
141+
synchronized (WindowManagerImpl.class) {
142+
if (sWindowManagerService == null) {
143+
sWindowManagerService = IWindowManager.Stub.asInterface(
144+
ServiceManager.getService("window"));
145+
}
146+
return sWindowManagerService;
147+
}
148+
}
149+
138150
public WindowManagerImpl makeLocal(Window parentWindow) {
139151
return new WindowManagerImpl(mState, parentWindow, parentWindow.getCompatibilityInfo());
140152
}

packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.app.StatusBarManager;
2323
import android.content.Context;
2424
import android.content.res.Resources;
25+
import android.graphics.Point;
2526
import android.graphics.Rect;
2627
import android.graphics.RectF;
2728
import android.graphics.drawable.Drawable;
@@ -431,13 +432,14 @@ private static String visibilityToString(int vis) {
431432
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
432433
pw.println("NavigationBarView {");
433434
final Rect r = new Rect();
435+
final Point size = new Point();
436+
mDisplay.getRealSize(size);
434437

435438
pw.println(String.format(" this: " + PhoneStatusBar.viewInfo(this)
436439
+ " " + visibilityToString(getVisibility())));
437440

438441
getWindowVisibleDisplayFrame(r);
439-
final boolean offscreen = r.right > mDisplay.getRawWidth()
440-
|| r.bottom > mDisplay.getRawHeight();
442+
final boolean offscreen = r.right > size.x || r.bottom > size.y;
441443
pw.println(" window: "
442444
+ r.toShortString()
443445
+ " " + visibilityToString(getWindowVisibility())

services/java/com/android/server/AppWidgetServiceImpl.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import android.content.res.Resources;
3737
import android.content.res.TypedArray;
3838
import android.content.res.XmlResourceParser;
39+
import android.graphics.Point;
3940
import android.net.Uri;
4041
import android.os.Binder;
4142
import android.os.Bundle;
@@ -49,6 +50,7 @@
4950
import android.util.Slog;
5051
import android.util.TypedValue;
5152
import android.util.Xml;
53+
import android.view.Display;
5254
import android.view.WindowManager;
5355
import android.widget.RemoteViews;
5456

@@ -188,11 +190,12 @@ public void disconnect() {
188190

189191
void computeMaximumWidgetBitmapMemory() {
190192
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
191-
int height = wm.getDefaultDisplay().getRawHeight();
192-
int width = wm.getDefaultDisplay().getRawWidth();
193+
Display display = wm.getDefaultDisplay();
194+
Point size = new Point();
195+
display.getRealSize(size);
193196
// Cap memory usage at 1.5 times the size of the display
194197
// 1.5 * 4 bytes/pixel * w * h ==> 6 * w * h
195-
mMaxWidgetBitmapMemory = 6 * width * height;
198+
mMaxWidgetBitmapMemory = 6 * size.x * size.y;
196199
}
197200

198201
public void systemReady(boolean safeMode) {

0 commit comments

Comments
 (0)