summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2016-08-27 01:37:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-08-27 01:37:09 +0000
commita2316b30410a38fc3df18a110d60e29019ab86a0 (patch)
treecc91e766215ea21dd5a941a63fbadb73a97f0e98
parent26aec7300d9271ba7a31d609a13254d19015c66a (diff)
parent160a3c578c5cbbe31f3dbb51fc0a78ee6d80c5cd (diff)
Merge "Fix invalid divider state while rotating" into nyc-mr1-dev
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/core/java/com/android/server/wm/Task.java13
-rw-r--r--services/core/java/com/android/server/wm/TaskStack.java46
3 files changed, 18 insertions, 43 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 1d57872b2fbc..aba64e8cc081 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -637,7 +637,7 @@ class DisplayContent {
*/
TaskStack getDockedStackVisibleForUserLocked() {
final TaskStack stack = mService.mStackIdToStack.get(DOCKED_STACK_ID);
- return (stack != null && stack.isVisibleForUserLocked()) ? stack : null;
+ return (stack != null && stack.isVisibleLocked(true /* ignoreKeyguard */)) ? stack : null;
}
/**
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 1dcada6729fc..fb9fafc39caf 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -677,19 +677,6 @@ class Task implements DimLayer.DimLayerUser {
return (tokensCount != 0) && mAppTokens.get(tokensCount - 1).showForAllUsers;
}
- boolean isVisibleForUser() {
- for (int i = mAppTokens.size() - 1; i >= 0; i--) {
- final AppWindowToken appToken = mAppTokens.get(i);
- for (int j = appToken.allAppWindows.size() - 1; j >= 0; j--) {
- WindowState window = appToken.allAppWindows.get(j);
- if (!window.isHiddenFromUserLocked()) {
- return true;
- }
- }
- }
- return false;
- }
-
boolean isVisible() {
for (int i = mAppTokens.size() - 1; i >= 0; i--) {
final AppWindowToken appToken = mAppTokens.get(i);
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 8be5b19d1530..a665edd22e71 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -398,23 +398,21 @@ public class TaskStack implements DimLayer.DimLayerUser,
return false;
}
- final int oldDockSide = mStackId == DOCKED_STACK_ID ? getDockSide() : DOCKED_INVALID;
mTmpRect2.set(mBounds);
mDisplayContent.rotateBounds(mRotation, newRotation, mTmpRect2);
if (mStackId == DOCKED_STACK_ID) {
repositionDockedStackAfterRotation(mTmpRect2);
snapDockedStackAfterRotation(mTmpRect2);
final int newDockSide = getDockSide(mTmpRect2);
- if (oldDockSide != newDockSide) {
- // Update the dock create mode and clear the dock create bounds, these
- // might change after a rotation and the original values will be invalid.
- mService.setDockedStackCreateStateLocked(
- (newDockSide == DOCKED_LEFT || newDockSide == DOCKED_TOP)
- ? DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT
- : DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT,
- null);
- mDisplayContent.getDockedDividerController().notifyDockSideChanged(newDockSide);
- }
+
+ // Update the dock create mode and clear the dock create bounds, these
+ // might change after a rotation and the original values will be invalid.
+ mService.setDockedStackCreateStateLocked(
+ (newDockSide == DOCKED_LEFT || newDockSide == DOCKED_TOP)
+ ? DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT
+ : DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT,
+ null);
+ mDisplayContent.getDockedDividerController().notifyDockSideChanged(newDockSide);
}
mBoundsAfterRotation.set(mTmpRect2);
@@ -890,7 +888,7 @@ public class TaskStack implements DimLayer.DimLayerUser,
mAdjustImeAmount = adjustAmount;
mAdjustDividerAmount = adjustDividerAmount;
updateAdjustedBounds();
- return isVisibleForUserLocked();
+ return isVisibleLocked(true /* ignoreKeyguard */);
} else {
return false;
}
@@ -926,7 +924,7 @@ public class TaskStack implements DimLayer.DimLayerUser,
if (minimizeAmount != mMinimizeAmount) {
mMinimizeAmount = minimizeAmount;
updateAdjustedBounds();
- return isVisibleForUserLocked();
+ return isVisibleLocked(true /* ignoreKeyguard*/);
} else {
return false;
}
@@ -943,7 +941,7 @@ public class TaskStack implements DimLayer.DimLayerUser,
void beginImeAdjustAnimation() {
for (int j = mTasks.size() - 1; j >= 0; j--) {
final Task task = mTasks.get(j);
- if (task.isVisibleForUser()) {
+ if (task.isVisible()) {
task.setDragResizing(true, DRAG_RESIZE_MODE_DOCKED_DIVIDER);
task.addWindowsWaitingForDrawnIfResizingChanged();
}
@@ -1233,9 +1231,13 @@ public class TaskStack implements DimLayer.DimLayerUser,
}
boolean isVisibleLocked() {
+ return isVisibleLocked(false /* ignoreKeyguard */);
+ }
+
+ boolean isVisibleLocked(boolean ignoreKeyguard) {
final boolean keyguardOn = mService.mPolicy.isKeyguardShowingOrOccluded()
&& !mService.mAnimator.mKeyguardGoingAway;
- if (keyguardOn && !StackId.isAllowedOverLockscreen(mStackId)) {
+ if (!ignoreKeyguard && keyguardOn && !StackId.isAllowedOverLockscreen(mStackId)) {
// The keyguard is showing and the stack shouldn't show on top of the keyguard.
return false;
}
@@ -1252,20 +1254,6 @@ public class TaskStack implements DimLayer.DimLayerUser,
return false;
}
- /**
- * @return true if a the stack is visible for the current in user, ignoring any other visibility
- * aspects, and false otherwise
- */
- boolean isVisibleForUserLocked() {
- for (int i = mTasks.size() - 1; i >= 0; i--) {
- final Task task = mTasks.get(i);
- if (task.isVisibleForUser()) {
- return true;
- }
- }
- return false;
- }
-
boolean isDragResizing() {
return mDragResizing;
}