Some code clean-up in WindowManager.
- Renamed DisplayContent.findTaskForControlPoint to
DisplayContent.findTaskForResizePoint as it is trying to find a task
from the resize point.
- Renamed DisplayContent.checkForDeferredActions to
DisplayContent.onCompleteDeferredRemoval as the method removes containers
whose removal were deferred.
- Added methods TaskStack.hasMultipleTaskWithHomeTaskNotTop() and
topTaskIsOnTopLauncher()
- And some other minor clean-up relating to me trying to break-up a big CL.
Change-Id: I64d03cbd9ee69bf8fa0013a49283cd434b7c8fbe
diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java
index 93e9559..af68137 100644
--- a/services/core/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java
@@ -383,8 +383,8 @@
return false;
}
- mAnimator.setAppLayoutChanges(this, WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM,
- "AppWindowToken", displayId);
+ mAppToken.setAppLayoutChanges(
+ WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM, "AppWindowToken", displayId);
clearAnimation();
animating = false;
@@ -397,8 +397,7 @@
mService.moveInputMethodWindowsIfNeededLocked(true);
}
- if (DEBUG_ANIM) Slog.v(TAG,
- "Animation done in " + mAppToken
+ if (DEBUG_ANIM) Slog.v(TAG, "Animation done in " + mAppToken
+ ": reportedVisible=" + mAppToken.reportedVisible);
transformation.clear();
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index e7a6747..3a3c017 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -331,7 +331,7 @@
* Find the task whose outside touch area (for resizing) (x, y) falls within.
* Returns null if the touch doesn't fall into a resizing area.
*/
- Task findTaskForControlPoint(int x, int y) {
+ Task findTaskForResizePoint(int x, int y) {
final int delta = mService.dipToPixel(RESIZE_HANDLE_WIDTH_IN_DP, mDisplayMetrics);
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
TaskStack stack = mStacks.get(stackNdx);
@@ -498,7 +498,7 @@
return false;
}
- void checkForDeferredActions() {
+ void onCompleteDeferredRemoval() {
boolean animating = false;
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
final TaskStack stack = mStacks.get(stackNdx);
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index de8e5ac..0f5b042 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -538,15 +538,13 @@
}
final TaskStack fullscreenStack
= mService.mStackIdToStack.get(FULLSCREEN_WORKSPACE_STACK_ID);
- final ArrayList<Task> homeStackTasks = homeStack.getTasks();
- final Task topHomeStackTask = homeStackTasks.get(homeStackTasks.size() - 1);
final boolean homeVisible = homeTask.getTopVisibleAppToken() != null;
final boolean homeBehind = (fullscreenStack != null && fullscreenStack.isVisible())
- || (homeStackTasks.size() > 1 && topHomeStackTask != homeTask);
+ || (homeStack.hasMultipleTaskWithHomeTaskNotTop());
// If the home task is an on-top launcher, we don't want to minimize the docked stack.
// Instead we want everything underneath that was visible to remain visible.
// See android.R.attr#onTopLauncher.
- final boolean isOnTopLauncher = topHomeStackTask.isOnTopLauncher();
+ final boolean isOnTopLauncher = homeStack.topTaskIsOnTopLauncher();
setMinimizedDockedStack(homeVisible && !homeBehind && !isOnTopLauncher, animate);
}
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 87ad639..cf31310 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -161,6 +161,14 @@
return null;
}
+ boolean hasMultipleTaskWithHomeTaskNotTop() {
+ return mTasks.size() > 1 && !mTasks.get(mTasks.size() - 1).isHomeTask();
+ }
+
+ boolean topTaskIsOnTopLauncher() {
+ return mTasks.get(mTasks.size() - 1).isOnTopLauncher();
+ }
+
/**
* Set the bounds of the stack and its containing tasks.
* @param stackBounds New stack bounds. Passing in null sets the bounds to fullscreen.
diff --git a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
index 0310b97..dd9ba73 100644
--- a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
+++ b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
@@ -64,7 +64,7 @@
case MotionEvent.ACTION_HOVER_MOVE: {
final int x = (int) motionEvent.getX();
final int y = (int) motionEvent.getY();
- final Task task = mDisplayContent.findTaskForControlPoint(x, y);
+ final Task task = mDisplayContent.findTaskForResizePoint(x, y);
int iconType = TYPE_NOT_SPECIFIED;
if (task != null) {
task.getDimBounds(mTmpRect);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index e45855a..1cc7dad 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -6699,7 +6699,7 @@
private void handleTapOutsideTask(DisplayContent displayContent, int x, int y) {
int taskId = -1;
synchronized (mWindowMap) {
- final Task task = displayContent.findTaskForControlPoint(x, y);
+ final Task task = displayContent.findTaskForResizePoint(x, y);
if (task != null) {
if (!startPositioningLocked(
task.getTopVisibleAppMainWindow(), true /*resize*/, x, y)) {
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 317bb35..22f39fb 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -560,7 +560,7 @@
// Remove all deferred displays stacks, tasks, and activities.
for (int displayNdx = mService.mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) {
- mService.mDisplayContents.valueAt(displayNdx).checkForDeferredActions();
+ mService.mDisplayContents.valueAt(displayNdx).onCompleteDeferredRemoval();
}
if (updateInputWindowsNeeded) {
@@ -606,8 +606,6 @@
final int displayId = displayContent.getDisplayId();
final int dw = displayInfo.logicalWidth;
final int dh = displayInfo.logicalHeight;
- final int innerDw = displayInfo.appWidth;
- final int innerDh = displayInfo.appHeight;
final boolean isDefaultDisplay = (displayId == Display.DEFAULT_DISPLAY);
// Reset for each display.
@@ -868,7 +866,7 @@
mPreferredModeId,
true /* inTraversal, must call performTraversalInTrans... below */);
- mService.getDisplayContentLocked(displayId).stopDimmingIfNeeded();
+ displayContent.stopDimmingIfNeeded();
if (updateAllDrawn) {
updateAllDrawnLocked(displayContent);