Loading policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -995,8 +995,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void setInitialDisplaySize(Display display, int width, int height, int density) { if (display.getDisplayId() != Display.DEFAULT_DISPLAY) { throw new IllegalArgumentException("Can only set the default display"); // This method might be called before the policy has been fully initialized // or for other displays we don't care about. if (mContext == null || display.getDisplayId() != Display.DEFAULT_DISPLAY) { return; } mDisplay = display; Loading services/java/com/android/server/display/DisplayManagerService.java +4 −15 Original line number Diff line number Diff line Loading @@ -314,6 +314,9 @@ public final class DisplayManagerService extends IDisplayManager.Stub { * to the display information synchronously so that applications will immediately * observe the new state. * * NOTE: This method must be the only entry point by which the window manager * influences the logical configuration of displays. * * @param displayId The logical display id. * @param info The new data to be stored. */ Loading @@ -322,9 +325,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub { synchronized (mSyncRoot) { LogicalDisplay display = mLogicalDisplays.get(displayId); if (display != null) { mTempDisplayInfo.copyFrom(display.getDisplayInfoLocked()); display.setDisplayInfoOverrideFromWindowManagerLocked(info); if (!mTempDisplayInfo.equals(display.getDisplayInfoLocked())) { if (display.setDisplayInfoOverrideFromWindowManagerLocked(info)) { sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_CHANGED); scheduleTraversalLocked(false); } Loading @@ -332,18 +333,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub { } } /** * Sets the overscan insets for a particular display. */ public void setOverscan(int displayId, int left, int top, int right, int bottom) { synchronized (mSyncRoot) { LogicalDisplay display = mLogicalDisplays.get(displayId); if (display != null) { display.setOverscan(left, top, right, bottom); } } } /** * Called by the window manager to perform traversals while holding a * surface flinger transaction. Loading services/java/com/android/server/display/LogicalDisplay.java +7 −15 Original line number Diff line number Diff line Loading @@ -128,32 +128,24 @@ final class LogicalDisplay { * * @param info The logical display information, may be null. */ public void setDisplayInfoOverrideFromWindowManagerLocked(DisplayInfo info) { public boolean setDisplayInfoOverrideFromWindowManagerLocked(DisplayInfo info) { if (info != null) { if (mOverrideDisplayInfo == null) { mOverrideDisplayInfo = new DisplayInfo(info); mInfo = null; } else if (!mOverrideDisplayInfo.equals(info)) { return true; } if (!mOverrideDisplayInfo.equals(info)) { mOverrideDisplayInfo.copyFrom(info); mInfo = null; return true; } } else if (mOverrideDisplayInfo != null) { mOverrideDisplayInfo = null; mInfo = null; return true; } } public void setOverscan(int left, int top, int right, int bottom) { mInfo.overscanLeft = left; mInfo.overscanTop = top; mInfo.overscanRight = right; mInfo.overscanBottom = bottom; if (mOverrideDisplayInfo != null) { mOverrideDisplayInfo.overscanLeft = left; mOverrideDisplayInfo.overscanTop = top; mOverrideDisplayInfo.overscanRight = right; mOverrideDisplayInfo.overscanBottom = bottom; } return false; } /** Loading services/java/com/android/server/wm/WindowManagerService.java +43 −34 Original line number Diff line number Diff line Loading @@ -6961,12 +6961,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { mIsTouchDevice = mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_TOUCHSCREEN); final DisplayContent displayContent = getDefaultDisplayContentLocked(); mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, displayContent.mInitialDisplayDensity); configureDisplayPolicyLocked(getDefaultDisplayContentLocked()); } try { Loading Loading @@ -7793,11 +7788,7 @@ public class WindowManagerService extends IWindowManager.Stub // displayContent must not be null private void reconfigureDisplayLocked(DisplayContent displayContent) { // TODO: Multidisplay: for now only use with default display. mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mBaseDisplayWidth, displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity); configureDisplayPolicyLocked(displayContent); displayContent.layoutNeeded = true; boolean configChanged = updateOrientationFromAppTokensLocked(false); Loading @@ -7818,6 +7809,18 @@ public class WindowManagerService extends IWindowManager.Stub performLayoutAndPlaceSurfacesLocked(); } private void configureDisplayPolicyLocked(DisplayContent displayContent) { mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mBaseDisplayWidth, displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity); DisplayInfo displayInfo = displayContent.getDisplayInfo(); mPolicy.setDisplayOverscan(displayContent.getDisplay(), displayInfo.overscanLeft, displayInfo.overscanTop, displayInfo.overscanRight, displayInfo.overscanBottom); } @Override public void setOverscan(int displayId, int left, int top, int right, int bottom) { if (mContext.checkCallingOrSelfPermission( Loading @@ -7829,7 +7832,13 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { mDisplayManagerService.setOverscan(displayId, left, top, right, bottom); setOverscanLocked(displayContent, left, top, right, bottom); } } } private void setOverscanLocked(DisplayContent displayContent, int left, int top, int right, int bottom) { final DisplayInfo displayInfo = displayContent.getDisplayInfo(); synchronized (displayContent.mDisplaySizeLock) { displayInfo.overscanLeft = left; Loading @@ -7837,13 +7846,11 @@ public class WindowManagerService extends IWindowManager.Stub displayInfo.overscanRight = right; displayInfo.overscanBottom = bottom; } mPolicy.setDisplayOverscan(displayContent.getDisplay(), left, top, right, bottom); displayContent.layoutNeeded = true; mDisplaySettings.setOverscanLocked(displayInfo.name, left, top, right, bottom); mDisplaySettings.writeSettingsLocked(); performLayoutAndPlaceSurfacesLocked(); } } reconfigureDisplayLocked(displayContent); } // ------------------------------------------------------------- Loading Loading @@ -10719,17 +10726,19 @@ public class WindowManagerService extends IWindowManager.Stub DisplayContent displayContent = new DisplayContent(display, this); final int displayId = display.getDisplayId(); mDisplayContents.put(displayId, displayContent); DisplayInfo displayInfo = displayContent.getDisplayInfo(); final Rect rect = new Rect(); DisplayInfo info = displayContent.getDisplayInfo(); mDisplaySettings.getOverscanLocked(info.name, rect); info.overscanLeft = rect.left; info.overscanTop = rect.top; info.overscanRight = rect.right; info.overscanBottom = rect.bottom; mDisplayManagerService.setOverscan(display.getDisplayId(), rect.left, rect.top, rect.right, rect.bottom); mPolicy.setDisplayOverscan(displayContent.getDisplay(), rect.left, rect.top, rect.right, rect.bottom); mDisplaySettings.getOverscanLocked(displayInfo.name, rect); synchronized (displayContent.mDisplaySizeLock) { displayInfo.overscanLeft = rect.left; displayInfo.overscanTop = rect.top; displayInfo.overscanRight = rect.right; displayInfo.overscanBottom = rect.bottom; mDisplayManagerService.setDisplayInfoOverrideFromWindowManager( displayId, displayInfo); } configureDisplayPolicyLocked(displayContent); // TODO: Create an input channel for each display with touch capability. if (displayId == Display.DEFAULT_DISPLAY) { Loading Loading
policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -995,8 +995,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void setInitialDisplaySize(Display display, int width, int height, int density) { if (display.getDisplayId() != Display.DEFAULT_DISPLAY) { throw new IllegalArgumentException("Can only set the default display"); // This method might be called before the policy has been fully initialized // or for other displays we don't care about. if (mContext == null || display.getDisplayId() != Display.DEFAULT_DISPLAY) { return; } mDisplay = display; Loading
services/java/com/android/server/display/DisplayManagerService.java +4 −15 Original line number Diff line number Diff line Loading @@ -314,6 +314,9 @@ public final class DisplayManagerService extends IDisplayManager.Stub { * to the display information synchronously so that applications will immediately * observe the new state. * * NOTE: This method must be the only entry point by which the window manager * influences the logical configuration of displays. * * @param displayId The logical display id. * @param info The new data to be stored. */ Loading @@ -322,9 +325,7 @@ public final class DisplayManagerService extends IDisplayManager.Stub { synchronized (mSyncRoot) { LogicalDisplay display = mLogicalDisplays.get(displayId); if (display != null) { mTempDisplayInfo.copyFrom(display.getDisplayInfoLocked()); display.setDisplayInfoOverrideFromWindowManagerLocked(info); if (!mTempDisplayInfo.equals(display.getDisplayInfoLocked())) { if (display.setDisplayInfoOverrideFromWindowManagerLocked(info)) { sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_CHANGED); scheduleTraversalLocked(false); } Loading @@ -332,18 +333,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub { } } /** * Sets the overscan insets for a particular display. */ public void setOverscan(int displayId, int left, int top, int right, int bottom) { synchronized (mSyncRoot) { LogicalDisplay display = mLogicalDisplays.get(displayId); if (display != null) { display.setOverscan(left, top, right, bottom); } } } /** * Called by the window manager to perform traversals while holding a * surface flinger transaction. Loading
services/java/com/android/server/display/LogicalDisplay.java +7 −15 Original line number Diff line number Diff line Loading @@ -128,32 +128,24 @@ final class LogicalDisplay { * * @param info The logical display information, may be null. */ public void setDisplayInfoOverrideFromWindowManagerLocked(DisplayInfo info) { public boolean setDisplayInfoOverrideFromWindowManagerLocked(DisplayInfo info) { if (info != null) { if (mOverrideDisplayInfo == null) { mOverrideDisplayInfo = new DisplayInfo(info); mInfo = null; } else if (!mOverrideDisplayInfo.equals(info)) { return true; } if (!mOverrideDisplayInfo.equals(info)) { mOverrideDisplayInfo.copyFrom(info); mInfo = null; return true; } } else if (mOverrideDisplayInfo != null) { mOverrideDisplayInfo = null; mInfo = null; return true; } } public void setOverscan(int left, int top, int right, int bottom) { mInfo.overscanLeft = left; mInfo.overscanTop = top; mInfo.overscanRight = right; mInfo.overscanBottom = bottom; if (mOverrideDisplayInfo != null) { mOverrideDisplayInfo.overscanLeft = left; mOverrideDisplayInfo.overscanTop = top; mOverrideDisplayInfo.overscanRight = right; mOverrideDisplayInfo.overscanBottom = bottom; } return false; } /** Loading
services/java/com/android/server/wm/WindowManagerService.java +43 −34 Original line number Diff line number Diff line Loading @@ -6961,12 +6961,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { mIsTouchDevice = mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_TOUCHSCREEN); final DisplayContent displayContent = getDefaultDisplayContentLocked(); mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, displayContent.mInitialDisplayDensity); configureDisplayPolicyLocked(getDefaultDisplayContentLocked()); } try { Loading Loading @@ -7793,11 +7788,7 @@ public class WindowManagerService extends IWindowManager.Stub // displayContent must not be null private void reconfigureDisplayLocked(DisplayContent displayContent) { // TODO: Multidisplay: for now only use with default display. mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mBaseDisplayWidth, displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity); configureDisplayPolicyLocked(displayContent); displayContent.layoutNeeded = true; boolean configChanged = updateOrientationFromAppTokensLocked(false); Loading @@ -7818,6 +7809,18 @@ public class WindowManagerService extends IWindowManager.Stub performLayoutAndPlaceSurfacesLocked(); } private void configureDisplayPolicyLocked(DisplayContent displayContent) { mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mBaseDisplayWidth, displayContent.mBaseDisplayHeight, displayContent.mBaseDisplayDensity); DisplayInfo displayInfo = displayContent.getDisplayInfo(); mPolicy.setDisplayOverscan(displayContent.getDisplay(), displayInfo.overscanLeft, displayInfo.overscanTop, displayInfo.overscanRight, displayInfo.overscanBottom); } @Override public void setOverscan(int displayId, int left, int top, int right, int bottom) { if (mContext.checkCallingOrSelfPermission( Loading @@ -7829,7 +7832,13 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { DisplayContent displayContent = getDisplayContentLocked(displayId); if (displayContent != null) { mDisplayManagerService.setOverscan(displayId, left, top, right, bottom); setOverscanLocked(displayContent, left, top, right, bottom); } } } private void setOverscanLocked(DisplayContent displayContent, int left, int top, int right, int bottom) { final DisplayInfo displayInfo = displayContent.getDisplayInfo(); synchronized (displayContent.mDisplaySizeLock) { displayInfo.overscanLeft = left; Loading @@ -7837,13 +7846,11 @@ public class WindowManagerService extends IWindowManager.Stub displayInfo.overscanRight = right; displayInfo.overscanBottom = bottom; } mPolicy.setDisplayOverscan(displayContent.getDisplay(), left, top, right, bottom); displayContent.layoutNeeded = true; mDisplaySettings.setOverscanLocked(displayInfo.name, left, top, right, bottom); mDisplaySettings.writeSettingsLocked(); performLayoutAndPlaceSurfacesLocked(); } } reconfigureDisplayLocked(displayContent); } // ------------------------------------------------------------- Loading Loading @@ -10719,17 +10726,19 @@ public class WindowManagerService extends IWindowManager.Stub DisplayContent displayContent = new DisplayContent(display, this); final int displayId = display.getDisplayId(); mDisplayContents.put(displayId, displayContent); DisplayInfo displayInfo = displayContent.getDisplayInfo(); final Rect rect = new Rect(); DisplayInfo info = displayContent.getDisplayInfo(); mDisplaySettings.getOverscanLocked(info.name, rect); info.overscanLeft = rect.left; info.overscanTop = rect.top; info.overscanRight = rect.right; info.overscanBottom = rect.bottom; mDisplayManagerService.setOverscan(display.getDisplayId(), rect.left, rect.top, rect.right, rect.bottom); mPolicy.setDisplayOverscan(displayContent.getDisplay(), rect.left, rect.top, rect.right, rect.bottom); mDisplaySettings.getOverscanLocked(displayInfo.name, rect); synchronized (displayContent.mDisplaySizeLock) { displayInfo.overscanLeft = rect.left; displayInfo.overscanTop = rect.top; displayInfo.overscanRight = rect.right; displayInfo.overscanBottom = rect.bottom; mDisplayManagerService.setDisplayInfoOverrideFromWindowManager( displayId, displayInfo); } configureDisplayPolicyLocked(displayContent); // TODO: Create an input channel for each display with touch capability. if (displayId == Display.DEFAULT_DISPLAY) { Loading