Fixing rotation issues.

- Ensuring that we can update the stack bounds of non-docked stacks upon
  rotation while split screen is enabled (previously disabled)
- Fix issue where subsequent bounds calculations were using the animation
  target bounds from the prior orientation

Bug: 36657966
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: I810e35f907721ef5c781b914adac3273ea8da5c8
This commit is contained in:
Winson Chung
2017-03-30 18:15:30 -07:00
parent 474662da39
commit a2249ac4e0
2 changed files with 10 additions and 4 deletions

View File

@@ -2252,9 +2252,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return;
}
if (!allowResizeInDockedMode && getStack(DOCKED_STACK_ID) != null) {
// If the docked stack exist we don't allow resizes of stacks not caused by the docked
// stack size changing so things don't get out of sync.
if (!allowResizeInDockedMode && !StackId.tasksAreFloating(stackId) &&
getStack(DOCKED_STACK_ID) != null) {
// If the docked stack exists, don't resize non-floating stacks independently of the
// size computed from the docked stack size (otherwise they will be out of sync)
return;
}

View File

@@ -340,7 +340,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
* @return the source bounds for the bounds animation.
*/
void getAnimatingSourceBounds(Rect outBounds) {
if (mBoundsAnimationSourceBounds != null) {
if (!mBoundsAnimationSourceBounds.isEmpty()) {
outBounds.set(mBoundsAnimationSourceBounds);
return;
}
@@ -419,6 +419,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
// we can just update and return them here
setBounds(mBounds);
mBoundsAfterRotation.set(mBounds);
// Once we've set the bounds based on the rotation of the old bounds in the new
// orientation, clear the animation target bounds since they are obsolete
mBoundsAnimationTarget.setEmpty();
mBoundsAnimationSourceBounds.setEmpty();
return true;
}