Merge "Avoid applying weird wallpaper offset" into udc-dev
This commit is contained in:
@@ -401,6 +401,19 @@ class WallpaperController {
|
|||||||
// swiping through Launcher pages).
|
// swiping through Launcher pages).
|
||||||
final Rect wallpaperFrame = wallpaperWin.getFrame();
|
final Rect wallpaperFrame = wallpaperWin.getFrame();
|
||||||
|
|
||||||
|
final int diffWidth = wallpaperFrame.width() - lastWallpaperBounds.width();
|
||||||
|
final int diffHeight = wallpaperFrame.height() - lastWallpaperBounds.height();
|
||||||
|
if ((wallpaperWin.mAttrs.flags & WindowManager.LayoutParams.FLAG_SCALED) != 0
|
||||||
|
&& Math.abs(diffWidth) > 1 && Math.abs(diffHeight) > 1) {
|
||||||
|
Slog.d(TAG, "Skip wallpaper offset with inconsistent orientation, bounds="
|
||||||
|
+ lastWallpaperBounds + " frame=" + wallpaperFrame);
|
||||||
|
// With FLAG_SCALED, the requested size should at least make the frame match one of
|
||||||
|
// side. If both sides contain differences, the client side may not have updated the
|
||||||
|
// latest size according to the current orientation. So skip calculating the offset to
|
||||||
|
// avoid the wallpaper not filling the screen.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int newXOffset = 0;
|
int newXOffset = 0;
|
||||||
int newYOffset = 0;
|
int newYOffset = 0;
|
||||||
boolean rawChanged = false;
|
boolean rawChanged = false;
|
||||||
@@ -417,7 +430,7 @@ class WallpaperController {
|
|||||||
float wpxs = mLastWallpaperXStep >= 0 ? mLastWallpaperXStep : -1.0f;
|
float wpxs = mLastWallpaperXStep >= 0 ? mLastWallpaperXStep : -1.0f;
|
||||||
// Difference between width of wallpaper image, and the last size of the wallpaper.
|
// Difference between width of wallpaper image, and the last size of the wallpaper.
|
||||||
// This is the horizontal surplus from the prior configuration.
|
// This is the horizontal surplus from the prior configuration.
|
||||||
int availw = wallpaperFrame.width() - lastWallpaperBounds.width();
|
int availw = diffWidth;
|
||||||
|
|
||||||
int displayOffset = getDisplayWidthOffset(availw, lastWallpaperBounds,
|
int displayOffset = getDisplayWidthOffset(availw, lastWallpaperBounds,
|
||||||
wallpaperWin.isRtl());
|
wallpaperWin.isRtl());
|
||||||
@@ -442,9 +455,7 @@ class WallpaperController {
|
|||||||
|
|
||||||
float wpy = mLastWallpaperY >= 0 ? mLastWallpaperY : 0.5f;
|
float wpy = mLastWallpaperY >= 0 ? mLastWallpaperY : 0.5f;
|
||||||
float wpys = mLastWallpaperYStep >= 0 ? mLastWallpaperYStep : -1.0f;
|
float wpys = mLastWallpaperYStep >= 0 ? mLastWallpaperYStep : -1.0f;
|
||||||
int availh = wallpaperWin.getFrame().bottom - wallpaperWin.getFrame().top
|
offset = diffHeight > 0 ? -(int) (diffHeight * wpy + .5f) : 0;
|
||||||
- lastWallpaperBounds.height();
|
|
||||||
offset = availh > 0 ? -(int)(availh * wpy + .5f) : 0;
|
|
||||||
if (mLastWallpaperDisplayOffsetY != Integer.MIN_VALUE) {
|
if (mLastWallpaperDisplayOffsetY != Integer.MIN_VALUE) {
|
||||||
offset += mLastWallpaperDisplayOffsetY;
|
offset += mLastWallpaperDisplayOffsetY;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user