Revert commits related to wallpaper cropping
bug: 28763785 related-to: 27989717 related-to: 28887408 Revert "Fix wallpaper crop during unlock animation" This reverts commit616c7c10b9. Revert "Fix wallpaper cropped too soon when unminimizing dock" This reverts commitf0b76b071c. Revert "Set final crop on wallpaper instead of intersect clip with stack bounds" This reverts commitdcf0183cea. Revert "Crop wallpaper windows to their current target stack bounds" This reverts commite6cb450b0d.
This commit is contained in:
@@ -606,7 +606,12 @@ public class DockedStackDividerController implements DimLayerUser {
|
||||
private void setMinimizedDockedStack(boolean minimized) {
|
||||
final TaskStack stack = mDisplayContent.getDockedStackVisibleForUserLocked();
|
||||
notifyDockedStackMinimizedChanged(minimized, 0);
|
||||
setMinimizeAmount(stack, minimized ? 1f : 0f);
|
||||
if (stack == null) {
|
||||
return;
|
||||
}
|
||||
if (stack.setAdjustedForMinimizedDock(minimized ? 1f : 0f)) {
|
||||
mService.mWindowPlacerLocked.performSurfacePlacement();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isAnimationMaximizing() {
|
||||
@@ -690,8 +695,11 @@ public class DockedStackDividerController implements DimLayerUser {
|
||||
float t = Math.min(1f, (float) (now - mAnimationStartTime) / mAnimationDuration);
|
||||
t = (isAnimationMaximizing() ? TOUCH_RESPONSE_INTERPOLATOR : mMinimizedDockInterpolator)
|
||||
.getInterpolation(t);
|
||||
setMinimizeAmount(stack, getMinimizeAmount(stack, t));
|
||||
|
||||
if (stack != null) {
|
||||
if (stack.setAdjustedForMinimizedDock(getMinimizeAmount(stack, t))) {
|
||||
mService.mWindowPlacerLocked.performSurfacePlacement();
|
||||
}
|
||||
}
|
||||
if (t >= 1.0f) {
|
||||
mAnimatingForMinimizedDockedStack = false;
|
||||
return false;
|
||||
@@ -700,42 +708,6 @@ public class DockedStackDividerController implements DimLayerUser {
|
||||
}
|
||||
}
|
||||
|
||||
void setMinimizeAmount(TaskStack dockedStack, float minimizeAmount) {
|
||||
final ArrayList<TaskStack> stacks = mDisplayContent.getStacks();
|
||||
|
||||
// If the docked stack is not visible, clear the complementary stack on all stacks.
|
||||
if (dockedStack == null) {
|
||||
for (int i = stacks.size() - 1; i >= 0; --i) {
|
||||
final TaskStack stack = stacks.get(i);
|
||||
stack.resetAdjustedForComplementDock();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise if the docked stack minimize amount has changed, update the adjusted bounds
|
||||
// on the other stack that's currently visible, so that the stack's getDimBounds()
|
||||
// occupies what's left by the docked stack. This is needed so that stuff like wallpaper
|
||||
// gets cropped properly to the area left by the dock.
|
||||
if (dockedStack.setAdjustedForMinimizedDock(minimizeAmount)) {
|
||||
final boolean adjusted =
|
||||
dockedStack.isVisibleForUserLocked() && minimizeAmount != 0.0f;
|
||||
dockedStack.getDimBounds(mTmpRect2);
|
||||
int dockSide = dockedStack.getDockSide();
|
||||
for (int i = stacks.size() - 1; i >= 0; --i) {
|
||||
final TaskStack stack = stacks.get(i);
|
||||
if (stack == dockedStack) {
|
||||
continue;
|
||||
}
|
||||
if (stack.isVisibleLocked() && adjusted) {
|
||||
stack.setAdjustedForComplementDock(mTmpRect2, dockSide);
|
||||
} else {
|
||||
stack.resetAdjustedForComplementDock();
|
||||
}
|
||||
}
|
||||
mService.mWindowPlacerLocked.performSurfacePlacement();
|
||||
}
|
||||
}
|
||||
|
||||
private float getInterpolatedAnimationValue(float t) {
|
||||
return t * mAnimationTarget + (1 - t) * mAnimationStart;
|
||||
}
|
||||
|
||||
@@ -123,7 +123,6 @@ public class TaskStack implements DimLayer.DimLayerUser,
|
||||
private float mAdjustImeAmount;
|
||||
private float mAdjustDividerAmount;
|
||||
private final int mDockedStackMinimizeThickness;
|
||||
private boolean mAdjustedForForComplementDock;
|
||||
|
||||
// If this is true, we are in the bounds animating mode.
|
||||
// The task will be down or upscaled to perfectly fit the
|
||||
@@ -243,9 +242,7 @@ public class TaskStack implements DimLayer.DimLayerUser,
|
||||
insetBounds = mFullyAdjustedImeBounds;
|
||||
}
|
||||
}
|
||||
if (!mAdjustedForForComplementDock) {
|
||||
alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds);
|
||||
}
|
||||
alignTasksToAdjustedBounds(adjusted ? mAdjustedBounds : mBounds, insetBounds);
|
||||
mDisplayContent.layoutNeeded = true;
|
||||
}
|
||||
|
||||
@@ -864,7 +861,6 @@ public class TaskStack implements DimLayer.DimLayerUser,
|
||||
mImeWin = imeWin;
|
||||
mImeGoingAway = false;
|
||||
if (!mAdjustedForIme || forceUpdate) {
|
||||
mAdjustedForForComplementDock = false;
|
||||
mAdjustedForIme = true;
|
||||
mAdjustImeAmount = 0f;
|
||||
mAdjustDividerAmount = 0f;
|
||||
@@ -927,12 +923,10 @@ public class TaskStack implements DimLayer.DimLayerUser,
|
||||
* @return Whether the amount has changed and a layout is needed.
|
||||
*/
|
||||
boolean setAdjustedForMinimizedDock(float minimizeAmount) {
|
||||
mAdjustedForForComplementDock = false;
|
||||
|
||||
if (minimizeAmount != mMinimizeAmount) {
|
||||
mMinimizeAmount = minimizeAmount;
|
||||
updateAdjustedBounds();
|
||||
return true;
|
||||
return isVisibleForUserLocked();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -942,33 +936,6 @@ public class TaskStack implements DimLayer.DimLayerUser,
|
||||
return mMinimizeAmount != 0f;
|
||||
}
|
||||
|
||||
void setAdjustedForComplementDock(Rect dockBounds, int dockSide) {
|
||||
if (mMinimizeAmount != 0f || mAdjustedForIme) {
|
||||
return;
|
||||
}
|
||||
mTmpAdjustedBounds.set(mBounds);
|
||||
if (dockSide == DOCKED_TOP) {
|
||||
mTmpAdjustedBounds.top = dockBounds.bottom;
|
||||
} else if (dockSide == DOCKED_LEFT) {
|
||||
mTmpAdjustedBounds.left = dockBounds.right;
|
||||
} else if (dockSide == DOCKED_RIGHT) {
|
||||
mTmpAdjustedBounds.right = dockBounds.left;
|
||||
} else {
|
||||
Slog.w(TAG_WM, "setAdjustedForComplementDock: invalid dock side " + dockSide);
|
||||
return;
|
||||
}
|
||||
mAdjustedForForComplementDock = true;
|
||||
setAdjustedBounds(mTmpAdjustedBounds);
|
||||
}
|
||||
|
||||
void resetAdjustedForComplementDock() {
|
||||
if (mAdjustedForForComplementDock) {
|
||||
mAdjustedForForComplementDock = false;
|
||||
mTmpAdjustedBounds.setEmpty();
|
||||
setAdjustedBounds(mTmpAdjustedBounds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Puts all visible tasks that are adjusted for IME into resizing mode and adds the windows
|
||||
* to the list of to be drawn windows the service is waiting for.
|
||||
|
||||
@@ -23,7 +23,6 @@ import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
|
||||
import static com.android.server.wm.AppWindowAnimator.sDummyAnimation;
|
||||
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
|
||||
@@ -1328,33 +1327,6 @@ class WindowStateAnimator {
|
||||
return;
|
||||
}
|
||||
|
||||
// We crop wallpaper windows to the stack bounds of their current target to avoid them
|
||||
// showing behind transparent windows in other stacks in split-screen mode.
|
||||
if (w.getBaseType() == TYPE_WALLPAPER) {
|
||||
final WindowState wallpaperTarget = mWallpaperControllerLocked.getWallpaperTarget();
|
||||
if (wallpaperTarget != null) {
|
||||
final Task task = wallpaperTarget.getTask();
|
||||
final WindowStateAnimator winAnimator = wallpaperTarget.mWinAnimator;
|
||||
// We can only crop the wallpaper using final crop with stack bounds if the target
|
||||
// is not animating, or if it's animating with clip mode STACK_CLIP_AFTER_ANIM.
|
||||
// If it's animating with mode STACK_CLIP_NONE, we shouldn't crop either the task
|
||||
// itself or the wallpaper. If it's animating with STACK_CLIP_BEFORE_ANIM, the crop
|
||||
// is before the transform on the task itself.
|
||||
final boolean useFinalCropOnWallpaper = !winAnimator.isAnimationSet()
|
||||
|| winAnimator.resolveStackClip() == STACK_CLIP_AFTER_ANIM;
|
||||
if (task != null && !task.isFullscreen()
|
||||
&& task.cropWindowsToStackBounds()
|
||||
&& useFinalCropOnWallpaper){
|
||||
final TaskStack stack = task.mStack;
|
||||
if (stack != null && !stack.isFullscreen()) {
|
||||
stack.getDimBounds(mTmpStackBounds);
|
||||
finalClipRect.set(mTmpStackBounds);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final Task task = w.getTask();
|
||||
if (task == null || !task.cropWindowsToStackBounds()) {
|
||||
return;
|
||||
@@ -1469,7 +1441,7 @@ class WindowStateAnimator {
|
||||
// We need to ensure for each surface, that we disable transformation matrix
|
||||
// scaling in the same transaction which we resize the surface in.
|
||||
// As we are in SCALING_MODE_SCALE_TO_WINDOW, SurfaceFlinger will
|
||||
// then take over the scaling until the new buffer arrives, and things
|
||||
// then take over the scaling until the new buffer arrives, and things
|
||||
// will be seamless.
|
||||
mForceScaleUntilResize = true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user