Loading services/java/com/android/server/WindowManagerService.java +60 −52 Original line number Diff line number Diff line Loading @@ -430,8 +430,8 @@ public class WindowManagerService extends IWindowManager.Stub // to another, and this is the higher one in Z-order. WindowState mUpperWallpaperTarget = null; int mWallpaperAnimLayerAdjustment; float mLastWallpaperX; float mLastWallpaperY; float mLastWallpaperX = -1; float mLastWallpaperY = -1; // Lock for waiting for the wallpaper. final Object mWaitingOnWallpaperLock = new Object(); // This is set when we are waiting for a wallpaper to tell us it is done Loading Loading @@ -1464,9 +1464,13 @@ public class WindowManagerService extends IWindowManager.Stub } if (visible) { if (mWallpaperTarget.mWallpaperX >= 0) { mLastWallpaperX = mWallpaperTarget.mWallpaperX; } if (mWallpaperTarget.mWallpaperY >= 0) { mLastWallpaperY = mWallpaperTarget.mWallpaperY; } } // Start stepping backwards from here, ensuring that our wallpaper windows // are correctly placed. Loading Loading @@ -1566,35 +1570,33 @@ public class WindowManagerService extends IWindowManager.Stub boolean sync) { boolean changed = false; boolean rawChanged = false; if (mLastWallpaperX >= 0) { float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : 0.5f; int availw = wallpaperWin.mFrame.right-wallpaperWin.mFrame.left-dw; int offset = availw > 0 ? -(int)(availw*mLastWallpaperX+.5f) : 0; int offset = availw > 0 ? -(int)(availw*wpx+.5f) : 0; changed = wallpaperWin.mXOffset != offset; if (changed) { if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper " + wallpaperWin + " x: " + offset); wallpaperWin.mXOffset = offset; } if (wallpaperWin.mWallpaperX != mLastWallpaperX) { wallpaperWin.mWallpaperX = mLastWallpaperX; if (wallpaperWin.mWallpaperX != wpx) { wallpaperWin.mWallpaperX = wpx; rawChanged = true; } } if (mLastWallpaperY >= 0) { float wpy = mLastWallpaperY >= 0 ? mLastWallpaperY : 0.5f; int availh = wallpaperWin.mFrame.bottom-wallpaperWin.mFrame.top-dh; int offset = availh > 0 ? -(int)(availh*mLastWallpaperY+.5f) : 0; offset = availh > 0 ? -(int)(availh*wpy+.5f) : 0; if (wallpaperWin.mYOffset != offset) { if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper " + wallpaperWin + " y: " + offset); changed = true; wallpaperWin.mYOffset = offset; } if (wallpaperWin.mWallpaperY != mLastWallpaperY) { wallpaperWin.mWallpaperY = mLastWallpaperY; if (wallpaperWin.mWallpaperY != wpy) { wallpaperWin.mWallpaperY = wpy; rawChanged = true; } } if (rawChanged) { try { Loading Loading @@ -1649,7 +1651,7 @@ public class WindowManagerService extends IWindowManager.Stub } } boolean updateWallpaperOffsetLocked(boolean sync) { boolean updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { final int dw = mDisplay.getWidth(); final int dh = mDisplay.getHeight(); Loading @@ -1657,8 +1659,18 @@ public class WindowManagerService extends IWindowManager.Stub WindowState target = mWallpaperTarget; if (target != null) { if (target.mWallpaperX >= 0) { mLastWallpaperX = target.mWallpaperX; } else if (changingTarget.mWallpaperX >= 0) { mLastWallpaperX = changingTarget.mWallpaperX; } if (target.mWallpaperY >= 0) { mLastWallpaperY = target.mWallpaperY; } else if (changingTarget.mWallpaperY >= 0) { mLastWallpaperY = changingTarget.mWallpaperY; } } int curTokenIndex = mWallpaperTokens.size(); while (curTokenIndex > 0) { curTokenIndex--; Loading @@ -1675,7 +1687,6 @@ public class WindowManagerService extends IWindowManager.Stub } } } } return changed; } Loading Loading @@ -2179,14 +2190,11 @@ public class WindowManagerService extends IWindowManager.Stub if (window.mWallpaperX != x || window.mWallpaperY != y) { window.mWallpaperX = x; window.mWallpaperY = y; if (mWallpaperTarget == window) { if (updateWallpaperOffsetLocked(true)) { if (updateWallpaperOffsetLocked(window, true)) { performLayoutAndPlaceSurfacesLocked(); } } } } public int relayoutWindow(Session session, IWindow client, WindowManager.LayoutParams attrs, int requestedWidth, Loading Loading
services/java/com/android/server/WindowManagerService.java +60 −52 Original line number Diff line number Diff line Loading @@ -430,8 +430,8 @@ public class WindowManagerService extends IWindowManager.Stub // to another, and this is the higher one in Z-order. WindowState mUpperWallpaperTarget = null; int mWallpaperAnimLayerAdjustment; float mLastWallpaperX; float mLastWallpaperY; float mLastWallpaperX = -1; float mLastWallpaperY = -1; // Lock for waiting for the wallpaper. final Object mWaitingOnWallpaperLock = new Object(); // This is set when we are waiting for a wallpaper to tell us it is done Loading Loading @@ -1464,9 +1464,13 @@ public class WindowManagerService extends IWindowManager.Stub } if (visible) { if (mWallpaperTarget.mWallpaperX >= 0) { mLastWallpaperX = mWallpaperTarget.mWallpaperX; } if (mWallpaperTarget.mWallpaperY >= 0) { mLastWallpaperY = mWallpaperTarget.mWallpaperY; } } // Start stepping backwards from here, ensuring that our wallpaper windows // are correctly placed. Loading Loading @@ -1566,35 +1570,33 @@ public class WindowManagerService extends IWindowManager.Stub boolean sync) { boolean changed = false; boolean rawChanged = false; if (mLastWallpaperX >= 0) { float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : 0.5f; int availw = wallpaperWin.mFrame.right-wallpaperWin.mFrame.left-dw; int offset = availw > 0 ? -(int)(availw*mLastWallpaperX+.5f) : 0; int offset = availw > 0 ? -(int)(availw*wpx+.5f) : 0; changed = wallpaperWin.mXOffset != offset; if (changed) { if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper " + wallpaperWin + " x: " + offset); wallpaperWin.mXOffset = offset; } if (wallpaperWin.mWallpaperX != mLastWallpaperX) { wallpaperWin.mWallpaperX = mLastWallpaperX; if (wallpaperWin.mWallpaperX != wpx) { wallpaperWin.mWallpaperX = wpx; rawChanged = true; } } if (mLastWallpaperY >= 0) { float wpy = mLastWallpaperY >= 0 ? mLastWallpaperY : 0.5f; int availh = wallpaperWin.mFrame.bottom-wallpaperWin.mFrame.top-dh; int offset = availh > 0 ? -(int)(availh*mLastWallpaperY+.5f) : 0; offset = availh > 0 ? -(int)(availh*wpy+.5f) : 0; if (wallpaperWin.mYOffset != offset) { if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper " + wallpaperWin + " y: " + offset); changed = true; wallpaperWin.mYOffset = offset; } if (wallpaperWin.mWallpaperY != mLastWallpaperY) { wallpaperWin.mWallpaperY = mLastWallpaperY; if (wallpaperWin.mWallpaperY != wpy) { wallpaperWin.mWallpaperY = wpy; rawChanged = true; } } if (rawChanged) { try { Loading Loading @@ -1649,7 +1651,7 @@ public class WindowManagerService extends IWindowManager.Stub } } boolean updateWallpaperOffsetLocked(boolean sync) { boolean updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { final int dw = mDisplay.getWidth(); final int dh = mDisplay.getHeight(); Loading @@ -1657,8 +1659,18 @@ public class WindowManagerService extends IWindowManager.Stub WindowState target = mWallpaperTarget; if (target != null) { if (target.mWallpaperX >= 0) { mLastWallpaperX = target.mWallpaperX; } else if (changingTarget.mWallpaperX >= 0) { mLastWallpaperX = changingTarget.mWallpaperX; } if (target.mWallpaperY >= 0) { mLastWallpaperY = target.mWallpaperY; } else if (changingTarget.mWallpaperY >= 0) { mLastWallpaperY = changingTarget.mWallpaperY; } } int curTokenIndex = mWallpaperTokens.size(); while (curTokenIndex > 0) { curTokenIndex--; Loading @@ -1675,7 +1687,6 @@ public class WindowManagerService extends IWindowManager.Stub } } } } return changed; } Loading Loading @@ -2179,14 +2190,11 @@ public class WindowManagerService extends IWindowManager.Stub if (window.mWallpaperX != x || window.mWallpaperY != y) { window.mWallpaperX = x; window.mWallpaperY = y; if (mWallpaperTarget == window) { if (updateWallpaperOffsetLocked(true)) { if (updateWallpaperOffsetLocked(window, true)) { performLayoutAndPlaceSurfacesLocked(); } } } } public int relayoutWindow(Session session, IWindow client, WindowManager.LayoutParams attrs, int requestedWidth, Loading