From 8202b2a5db2219c72c4895b497d256ddca216821 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 3 Feb 2016 19:24:31 -0800 Subject: [PATCH] Use separate flag to suppress resizes When moving a task between stacks, we temporarily suppress resize changes because while moving, the task is still in another stack which might get resized by the docked stack because when fetching the stack, we might create it and thus resize the other stack. Introduce mTemporarilyUnresizable which makes it really not resizable, regardless of whether we are force resizing our activities. Change-Id: Ib51163a0606106fd55f5bdeecf8e53f08add4b4b --- .../java/com/android/server/am/ActivityStackSupervisor.java | 4 ++-- services/core/java/com/android/server/am/TaskRecord.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 3cc9ba8719e89..a07ed2e5a6169 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2208,9 +2208,9 @@ public final class ActivityStackSupervisor implements DisplayListener { // Temporarily disable resizeablility of task we are moving. We don't want it to be resized // if a docked stack is created below which will lead to the stack we are moving from and // its resizeable tasks being resized. - task.mResizeMode = RESIZE_MODE_UNRESIZEABLE; + task.mTemporarilyUnresizable = true; final ActivityStack stack = getStack(stackId, CREATE_IF_NEEDED, toTop); - task.mResizeMode = resizeMode; + task.mTemporarilyUnresizable = false; mWindowManager.moveTaskToStack(task.taskId, stack.mStackId, toTop); stack.addTask(task, toTop, reason); diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index a56f04ba4493d..703dfca27f2a6 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -162,6 +162,8 @@ final class TaskRecord { int mResizeMode; // The resize mode of this task and its activities. // Based on the {@link ActivityInfo#resizeMode} of the root activity. + boolean mTemporarilyUnresizable; // Separate flag from mResizeMode used to suppress resize + // changes on a temporary basis. int mLockTaskMode; // Which tasklock mode to launch this task in. One of // ActivityManager.LOCK_TASK_LAUNCH_MODE_* private boolean mPrivileged; // The root activity application of this task holds @@ -939,7 +941,7 @@ final class TaskRecord { boolean isResizeable() { return !isHomeTask() && (mService.mForceResizableActivities - || ActivityInfo.isResizeableMode(mResizeMode)); + || ActivityInfo.isResizeableMode(mResizeMode)) && !mTemporarilyUnresizable; } boolean inCropWindowsResizeMode() {