diff options
-rw-r--r-- | cmds/wm/src/com/android/commands/wm/Wm.java | 35 | ||||
-rw-r--r-- | core/java/android/view/IWindowManager.aidl | 4 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 40 |
3 files changed, 74 insertions, 5 deletions
diff --git a/cmds/wm/src/com/android/commands/wm/Wm.java b/cmds/wm/src/com/android/commands/wm/Wm.java index f48764f..31eba96 100644 --- a/cmds/wm/src/com/android/commands/wm/Wm.java +++ b/cmds/wm/src/com/android/commands/wm/Wm.java @@ -19,6 +19,7 @@ package com.android.commands.wm; import android.content.Context; +import android.graphics.Point; import android.graphics.Rect; import android.os.RemoteException; import android.os.ServiceManager; @@ -87,9 +88,22 @@ public class Wm { } private void runDisplaySize() throws Exception { - String size = nextArgRequired(); + String size = nextArg(); int w, h; - if ("reset".equals(size)) { + if (size == null) { + Point initialSize = new Point(); + Point baseSize = new Point(); + try { + mWm.getInitialDisplaySize(Display.DEFAULT_DISPLAY, initialSize); + mWm.getBaseDisplaySize(Display.DEFAULT_DISPLAY, baseSize); + System.out.println("Physical size: " + initialSize.x + "x" + initialSize.y); + if (!initialSize.equals(baseSize)) { + System.out.println("Override size: " + baseSize.x + "x" + baseSize.y); + } + } catch (RemoteException e) { + } + return; + } else if ("reset".equals(size)) { w = h = -1; } else { int div = size.indexOf('x'); @@ -120,9 +134,20 @@ public class Wm { } private void runDisplayDensity() throws Exception { - String densityStr = nextArgRequired(); + String densityStr = nextArg(); int density; - if ("reset".equals(densityStr)) { + if (densityStr == null) { + try { + int initialDensity = mWm.getInitialDisplayDensity(Display.DEFAULT_DISPLAY); + int baseDensity = mWm.getBaseDisplayDensity(Display.DEFAULT_DISPLAY); + System.out.println("Physical density: " + initialDensity); + if (initialDensity != baseDensity) { + System.out.println("Override density: " + baseDensity); + } + } catch (RemoteException e) { + } + return; + } else if ("reset".equals(densityStr)) { density = -1; } else { try { @@ -231,7 +256,7 @@ public class Wm { " wm density [reset|DENSITY]\n" + " wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]\n" + "\n" + - "wm size: override display size.\n" + + "wm size: return or override display size.\n" + "\n" + "wm density: override display density.\n" + "\n" + diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index f0c6241..a85a558 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -60,8 +60,12 @@ interface IWindowManager in IInputContext inputContext); boolean inputMethodClientHasFocus(IInputMethodClient client); + void getInitialDisplaySize(int displayId, out Point size); + void getBaseDisplaySize(int displayId, out Point size); void setForcedDisplaySize(int displayId, int width, int height); void clearForcedDisplaySize(int displayId); + int getInitialDisplayDensity(int displayId); + int getBaseDisplayDensity(int displayId); void setForcedDisplayDensity(int displayId, int density); void clearForcedDisplayDensity(int displayId); diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index b46fb2f..34052f3 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -7291,6 +7291,7 @@ public class WindowManagerService extends IWindowManager.Stub return false; } + @Override public void getInitialDisplaySize(int displayId, Point size) { synchronized (mWindowMap) { final DisplayContent displayContent = getDisplayContentLocked(displayId); @@ -7304,6 +7305,19 @@ public class WindowManagerService extends IWindowManager.Stub } @Override + public void getBaseDisplaySize(int displayId, Point size) { + synchronized (mWindowMap) { + final DisplayContent displayContent = getDisplayContentLocked(displayId); + if (displayContent != null) { + synchronized(displayContent.mDisplaySizeLock) { + size.x = displayContent.mBaseDisplayWidth; + size.y = displayContent.mBaseDisplayHeight; + } + } + } + } + + @Override public void setForcedDisplaySize(int displayId, int width, int height) { if (mContext.checkCallingOrSelfPermission( android.Manifest.permission.WRITE_SECURE_SETTINGS) != @@ -7406,6 +7420,32 @@ public class WindowManagerService extends IWindowManager.Stub } @Override + public int getInitialDisplayDensity(int displayId) { + synchronized (mWindowMap) { + final DisplayContent displayContent = getDisplayContentLocked(displayId); + if (displayContent != null) { + synchronized(displayContent.mDisplaySizeLock) { + return displayContent.mInitialDisplayDensity; + } + } + } + return -1; + } + + @Override + public int getBaseDisplayDensity(int displayId) { + synchronized (mWindowMap) { + final DisplayContent displayContent = getDisplayContentLocked(displayId); + if (displayContent != null) { + synchronized(displayContent.mDisplaySizeLock) { + return displayContent.mBaseDisplayDensity; + } + } + } + return -1; + } + + @Override public void setForcedDisplayDensity(int displayId, int density) { if (mContext.checkCallingOrSelfPermission( android.Manifest.permission.WRITE_SECURE_SETTINGS) != |