Loading services/core/java/com/android/server/wm/WallpaperController.java +6 −6 Original line number Diff line number Diff line Loading @@ -304,7 +304,11 @@ class WallpaperController { } } boolean updateWallpaperOffset(WindowState wallpaperWin, int dw, int dh, boolean sync) { boolean updateWallpaperOffset(WindowState wallpaperWin, boolean sync) { final DisplayInfo displayInfo = wallpaperWin.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; int xOffset = 0; int yOffset = 0; boolean rawChanged = false; Loading Loading @@ -444,10 +448,6 @@ class WallpaperController { } private void updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; WindowState target = mWallpaperTarget; if (target != null) { if (target.mWallpaperX >= 0) { Loading Loading @@ -484,7 +484,7 @@ class WallpaperController { } for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) { mWallpaperTokens.get(curTokenNdx).updateWallpaperOffset(dw, dh, sync); mWallpaperTokens.get(curTokenNdx).updateWallpaperOffset(sync); } } Loading services/core/java/com/android/server/wm/WallpaperWindowToken.java +4 −16 Original line number Diff line number Diff line Loading @@ -73,11 +73,11 @@ class WallpaperWindowToken extends WindowToken { } } void updateWallpaperOffset(int dw, int dh, boolean sync) { void updateWallpaperOffset(boolean sync) { final WallpaperController wallpaperController = mDisplayContent.mWallpaperController; for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, sync)) { if (wallpaperController.updateWallpaperOffset(wallpaper, sync)) { // We only want to be synchronous with one wallpaper. sync = false; } Loading @@ -85,10 +85,6 @@ class WallpaperWindowToken extends WindowToken { } void updateWallpaperVisibility(boolean visible) { final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; if (isVisible() != visible) { // Need to do a layout to ensure the wallpaper now has the correct size. mDisplayContent.setLayoutNeeded(); Loading @@ -98,7 +94,7 @@ class WallpaperWindowToken extends WindowToken { for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (visible) { wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, false); wallpaperController.updateWallpaperOffset(wallpaper, false /* sync */); } wallpaper.dispatchWallpaperVisibility(visible); Loading Loading @@ -145,19 +141,11 @@ class WallpaperWindowToken extends WindowToken { } } DisplayInfo displayInfo = getFixedRotationTransformDisplayInfo(); if (displayInfo == null) { displayInfo = mDisplayContent.getDisplayInfo(); } final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (visible) { wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, false); wallpaperController.updateWallpaperOffset(wallpaper, false /* sync */); } // First, make sure the client has the current visibility state. Loading services/core/java/com/android/server/wm/WindowManagerService.java +1 −3 Original line number Diff line number Diff line Loading @@ -2332,9 +2332,7 @@ public class WindowManagerService extends IWindowManager.Stub Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); if (toBeDisplayed && win.mIsWallpaper) { DisplayInfo displayInfo = displayContent.getDisplayInfo(); displayContent.mWallpaperController.updateWallpaperOffset( win, displayInfo.logicalWidth, displayInfo.logicalHeight, false); displayContent.mWallpaperController.updateWallpaperOffset(win, false /* sync */); } if (win.mActivityRecord != null) { win.mActivityRecord.updateReportedVisibilityLocked(); Loading services/core/java/com/android/server/wm/WindowState.java +1 −3 Original line number Diff line number Diff line Loading @@ -1101,7 +1101,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } final ActivityStack stack = getRootTask(); layoutDisplayFrame = new Rect(windowFrames.mDisplayFrame); windowFrames.mDisplayFrame.set(windowFrames.mContainingFrame); layoutXDiff = mInsetFrame.left - windowFrames.mContainingFrame.left; Loading Loading @@ -1205,8 +1204,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (mIsWallpaper && (fw != windowFrames.mFrame.width() || fh != windowFrames.mFrame.height())) { dc.mWallpaperController.updateWallpaperOffset(this, displayInfo.logicalWidth, displayInfo.logicalHeight, false /* sync */); dc.mWallpaperController.updateWallpaperOffset(this, false /* sync */); } // Calculate relative frame Loading services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +7 −0 Original line number Diff line number Diff line Loading @@ -1039,6 +1039,13 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(config90.orientation, app.getConfiguration().orientation); assertEquals(config90.windowConfiguration.getBounds(), app.getBounds()); // Force the negative offset to verify it can be updated. mWallpaperWindow.mWinAnimator.mXOffset = mWallpaperWindow.mWinAnimator.mYOffset = -1; assertTrue(mDisplayContent.mWallpaperController.updateWallpaperOffset(mWallpaperWindow, false /* sync */)); assertThat(mWallpaperWindow.mWinAnimator.mXOffset).isGreaterThan(-1); assertThat(mWallpaperWindow.mWinAnimator.mYOffset).isGreaterThan(-1); mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(app.token); // The animation in old rotation should be cancelled. Loading Loading
services/core/java/com/android/server/wm/WallpaperController.java +6 −6 Original line number Diff line number Diff line Loading @@ -304,7 +304,11 @@ class WallpaperController { } } boolean updateWallpaperOffset(WindowState wallpaperWin, int dw, int dh, boolean sync) { boolean updateWallpaperOffset(WindowState wallpaperWin, boolean sync) { final DisplayInfo displayInfo = wallpaperWin.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; int xOffset = 0; int yOffset = 0; boolean rawChanged = false; Loading Loading @@ -444,10 +448,6 @@ class WallpaperController { } private void updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; WindowState target = mWallpaperTarget; if (target != null) { if (target.mWallpaperX >= 0) { Loading Loading @@ -484,7 +484,7 @@ class WallpaperController { } for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) { mWallpaperTokens.get(curTokenNdx).updateWallpaperOffset(dw, dh, sync); mWallpaperTokens.get(curTokenNdx).updateWallpaperOffset(sync); } } Loading
services/core/java/com/android/server/wm/WallpaperWindowToken.java +4 −16 Original line number Diff line number Diff line Loading @@ -73,11 +73,11 @@ class WallpaperWindowToken extends WindowToken { } } void updateWallpaperOffset(int dw, int dh, boolean sync) { void updateWallpaperOffset(boolean sync) { final WallpaperController wallpaperController = mDisplayContent.mWallpaperController; for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, sync)) { if (wallpaperController.updateWallpaperOffset(wallpaper, sync)) { // We only want to be synchronous with one wallpaper. sync = false; } Loading @@ -85,10 +85,6 @@ class WallpaperWindowToken extends WindowToken { } void updateWallpaperVisibility(boolean visible) { final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; if (isVisible() != visible) { // Need to do a layout to ensure the wallpaper now has the correct size. mDisplayContent.setLayoutNeeded(); Loading @@ -98,7 +94,7 @@ class WallpaperWindowToken extends WindowToken { for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (visible) { wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, false); wallpaperController.updateWallpaperOffset(wallpaper, false /* sync */); } wallpaper.dispatchWallpaperVisibility(visible); Loading Loading @@ -145,19 +141,11 @@ class WallpaperWindowToken extends WindowToken { } } DisplayInfo displayInfo = getFixedRotationTransformDisplayInfo(); if (displayInfo == null) { displayInfo = mDisplayContent.getDisplayInfo(); } final int dw = displayInfo.logicalWidth; final int dh = displayInfo.logicalHeight; for (int wallpaperNdx = mChildren.size() - 1; wallpaperNdx >= 0; wallpaperNdx--) { final WindowState wallpaper = mChildren.get(wallpaperNdx); if (visible) { wallpaperController.updateWallpaperOffset(wallpaper, dw, dh, false); wallpaperController.updateWallpaperOffset(wallpaper, false /* sync */); } // First, make sure the client has the current visibility state. Loading
services/core/java/com/android/server/wm/WindowManagerService.java +1 −3 Original line number Diff line number Diff line Loading @@ -2332,9 +2332,7 @@ public class WindowManagerService extends IWindowManager.Stub Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); if (toBeDisplayed && win.mIsWallpaper) { DisplayInfo displayInfo = displayContent.getDisplayInfo(); displayContent.mWallpaperController.updateWallpaperOffset( win, displayInfo.logicalWidth, displayInfo.logicalHeight, false); displayContent.mWallpaperController.updateWallpaperOffset(win, false /* sync */); } if (win.mActivityRecord != null) { win.mActivityRecord.updateReportedVisibilityLocked(); Loading
services/core/java/com/android/server/wm/WindowState.java +1 −3 Original line number Diff line number Diff line Loading @@ -1101,7 +1101,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } final ActivityStack stack = getRootTask(); layoutDisplayFrame = new Rect(windowFrames.mDisplayFrame); windowFrames.mDisplayFrame.set(windowFrames.mContainingFrame); layoutXDiff = mInsetFrame.left - windowFrames.mContainingFrame.left; Loading Loading @@ -1205,8 +1204,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (mIsWallpaper && (fw != windowFrames.mFrame.width() || fh != windowFrames.mFrame.height())) { dc.mWallpaperController.updateWallpaperOffset(this, displayInfo.logicalWidth, displayInfo.logicalHeight, false /* sync */); dc.mWallpaperController.updateWallpaperOffset(this, false /* sync */); } // Calculate relative frame Loading
services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +7 −0 Original line number Diff line number Diff line Loading @@ -1039,6 +1039,13 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(config90.orientation, app.getConfiguration().orientation); assertEquals(config90.windowConfiguration.getBounds(), app.getBounds()); // Force the negative offset to verify it can be updated. mWallpaperWindow.mWinAnimator.mXOffset = mWallpaperWindow.mWinAnimator.mYOffset = -1; assertTrue(mDisplayContent.mWallpaperController.updateWallpaperOffset(mWallpaperWindow, false /* sync */)); assertThat(mWallpaperWindow.mWinAnimator.mXOffset).isGreaterThan(-1); assertThat(mWallpaperWindow.mWinAnimator.mYOffset).isGreaterThan(-1); mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(app.token); // The animation in old rotation should be cancelled. Loading