Loading services/core/java/com/android/server/display/LogicalDisplay.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -261,6 +261,7 @@ final class LogicalDisplay { mPrimaryDisplayDeviceInfo = deviceInfo; mPrimaryDisplayDeviceInfo = deviceInfo; mInfo = null; mInfo = null; mOverrideDisplayInfo = null; } } } } Loading services/core/java/com/android/server/wm/DisplayContent.java +30 −4 Original line number Original line Diff line number Diff line Loading @@ -919,6 +919,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo void updateDisplayInfo() { void updateDisplayInfo() { mDisplay.getDisplayInfo(mDisplayInfo); mDisplay.getDisplayInfo(mDisplayInfo); mDisplay.getMetrics(mDisplayMetrics); mDisplay.getMetrics(mDisplayMetrics); // Check if display metrics changed and update base values if needed. updateBaseDisplayMetricsIfNeeded(); for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) { for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) { mTaskStackContainers.get(i).updateDisplayInfo(null); mTaskStackContainers.get(i).updateDisplayInfo(null); } } Loading @@ -934,10 +938,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } } } mBaseDisplayWidth = mInitialDisplayWidth = mDisplayInfo.logicalWidth; updateBaseDisplayMetrics(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight, mBaseDisplayHeight = mInitialDisplayHeight = mDisplayInfo.logicalHeight; mDisplayInfo.logicalDensityDpi); mBaseDisplayDensity = mInitialDisplayDensity = mDisplayInfo.logicalDensityDpi; mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight); } } void getLogicalDisplayRect(Rect out) { void getLogicalDisplayRect(Rect out) { Loading Loading @@ -967,6 +969,30 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } } } /** If display metrics changed and it's not just a rotation - update base values. */ private void updateBaseDisplayMetricsIfNeeded() { final int orientation = mDisplayInfo.rotation; final boolean rotated = (orientation == ROTATION_90 || orientation == ROTATION_270); final int newWidth = rotated ? mDisplayInfo.logicalHeight : mDisplayInfo.logicalWidth; final int newHeight = rotated ? mDisplayInfo.logicalWidth : mDisplayInfo.logicalHeight; boolean displayMetricsChanged = mBaseDisplayWidth != newWidth || mBaseDisplayHeight != newHeight; displayMetricsChanged |= mBaseDisplayDensity != mDisplayInfo.logicalDensityDpi; if (displayMetricsChanged) { updateBaseDisplayMetrics(newWidth, newHeight, mDisplayInfo.logicalDensityDpi); mService.reconfigureDisplayLocked(this); } } void updateBaseDisplayMetrics(int baseWidth, int baseHeight, int baseDensity) { mBaseDisplayWidth = mInitialDisplayWidth = baseWidth; mBaseDisplayHeight = mInitialDisplayHeight = baseHeight; mBaseDisplayDensity = mInitialDisplayDensity = baseDensity; mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight); } void getContentRect(Rect out) { void getContentRect(Rect out) { out.set(mContentRect); out.set(mContentRect); } } Loading services/core/java/com/android/server/wm/WindowManagerService.java +3 −4 Original line number Original line Diff line number Diff line Loading @@ -5932,8 +5932,8 @@ public class WindowManagerService extends IWindowManager.Stub if (displayContent.mBaseDisplayWidth != width if (displayContent.mBaseDisplayWidth != width || displayContent.mBaseDisplayHeight != height) { || displayContent.mBaseDisplayHeight != height) { Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height); Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height); displayContent.mBaseDisplayWidth = width; displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayHeight = height; displayContent.mBaseDisplayDensity); } } } catch (NumberFormatException ex) { } catch (NumberFormatException ex) { } } Loading @@ -5958,8 +5958,7 @@ public class WindowManagerService extends IWindowManager.Stub // displayContent must not be null // displayContent must not be null private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) { private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) { Slog.i(TAG_WM, "Using new display size: " + width + "x" + height); Slog.i(TAG_WM, "Using new display size: " + width + "x" + height); displayContent.mBaseDisplayWidth = width; displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayDensity); displayContent.mBaseDisplayHeight = height; reconfigureDisplayLocked(displayContent); reconfigureDisplayLocked(displayContent); } } Loading Loading
services/core/java/com/android/server/display/LogicalDisplay.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -261,6 +261,7 @@ final class LogicalDisplay { mPrimaryDisplayDeviceInfo = deviceInfo; mPrimaryDisplayDeviceInfo = deviceInfo; mInfo = null; mInfo = null; mOverrideDisplayInfo = null; } } } } Loading
services/core/java/com/android/server/wm/DisplayContent.java +30 −4 Original line number Original line Diff line number Diff line Loading @@ -919,6 +919,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo void updateDisplayInfo() { void updateDisplayInfo() { mDisplay.getDisplayInfo(mDisplayInfo); mDisplay.getDisplayInfo(mDisplayInfo); mDisplay.getMetrics(mDisplayMetrics); mDisplay.getMetrics(mDisplayMetrics); // Check if display metrics changed and update base values if needed. updateBaseDisplayMetricsIfNeeded(); for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) { for (int i = mTaskStackContainers.size() - 1; i >= 0; --i) { mTaskStackContainers.get(i).updateDisplayInfo(null); mTaskStackContainers.get(i).updateDisplayInfo(null); } } Loading @@ -934,10 +938,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } } } mBaseDisplayWidth = mInitialDisplayWidth = mDisplayInfo.logicalWidth; updateBaseDisplayMetrics(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight, mBaseDisplayHeight = mInitialDisplayHeight = mDisplayInfo.logicalHeight; mDisplayInfo.logicalDensityDpi); mBaseDisplayDensity = mInitialDisplayDensity = mDisplayInfo.logicalDensityDpi; mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight); } } void getLogicalDisplayRect(Rect out) { void getLogicalDisplayRect(Rect out) { Loading Loading @@ -967,6 +969,30 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } } } } /** If display metrics changed and it's not just a rotation - update base values. */ private void updateBaseDisplayMetricsIfNeeded() { final int orientation = mDisplayInfo.rotation; final boolean rotated = (orientation == ROTATION_90 || orientation == ROTATION_270); final int newWidth = rotated ? mDisplayInfo.logicalHeight : mDisplayInfo.logicalWidth; final int newHeight = rotated ? mDisplayInfo.logicalWidth : mDisplayInfo.logicalHeight; boolean displayMetricsChanged = mBaseDisplayWidth != newWidth || mBaseDisplayHeight != newHeight; displayMetricsChanged |= mBaseDisplayDensity != mDisplayInfo.logicalDensityDpi; if (displayMetricsChanged) { updateBaseDisplayMetrics(newWidth, newHeight, mDisplayInfo.logicalDensityDpi); mService.reconfigureDisplayLocked(this); } } void updateBaseDisplayMetrics(int baseWidth, int baseHeight, int baseDensity) { mBaseDisplayWidth = mInitialDisplayWidth = baseWidth; mBaseDisplayHeight = mInitialDisplayHeight = baseHeight; mBaseDisplayDensity = mInitialDisplayDensity = baseDensity; mBaseDisplayRect.set(0, 0, mBaseDisplayWidth, mBaseDisplayHeight); } void getContentRect(Rect out) { void getContentRect(Rect out) { out.set(mContentRect); out.set(mContentRect); } } Loading
services/core/java/com/android/server/wm/WindowManagerService.java +3 −4 Original line number Original line Diff line number Diff line Loading @@ -5932,8 +5932,8 @@ public class WindowManagerService extends IWindowManager.Stub if (displayContent.mBaseDisplayWidth != width if (displayContent.mBaseDisplayWidth != width || displayContent.mBaseDisplayHeight != height) { || displayContent.mBaseDisplayHeight != height) { Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height); Slog.i(TAG_WM, "FORCED DISPLAY SIZE: " + width + "x" + height); displayContent.mBaseDisplayWidth = width; displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayHeight = height; displayContent.mBaseDisplayDensity); } } } catch (NumberFormatException ex) { } catch (NumberFormatException ex) { } } Loading @@ -5958,8 +5958,7 @@ public class WindowManagerService extends IWindowManager.Stub // displayContent must not be null // displayContent must not be null private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) { private void setForcedDisplaySizeLocked(DisplayContent displayContent, int width, int height) { Slog.i(TAG_WM, "Using new display size: " + width + "x" + height); Slog.i(TAG_WM, "Using new display size: " + width + "x" + height); displayContent.mBaseDisplayWidth = width; displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayDensity); displayContent.mBaseDisplayHeight = height; reconfigureDisplayLocked(displayContent); reconfigureDisplayLocked(displayContent); } } Loading