Skip to content

Commit ffed02b

Browse files
Jeff BrownAndroid (Google) Code Review
authored andcommitted
Merge "Stop using raw display size except in window manager."
2 parents a807a50 + a8b9def commit ffed02b

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)