From d6aee18cabe75cbd4e98bfa380dffb89d89e0efc Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Tue, 14 Jun 2016 13:10:09 -0700 Subject: [PATCH] Make sure task exists in WM before trying to set the resizing state It is possible for a task to be removed from the WM and stack in AM while resizing (e.g. app crashes). In this case we want to make sure the task exist in WM before we try to set the dock resizing state vs. depending on the fact that the task is in recent list in AM. Bug: 29325623 Change-Id: Ib89a7bfe12fe1f2c4c6c56ac9e13b0052ea2b4ec --- .../java/com/android/server/am/ActivityStackSupervisor.java | 2 +- .../core/java/com/android/server/wm/WindowManagerService.java | 4 ++-- 2 files changed, 3 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 52c002d4cc5ad..7a43d53d70213 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2028,7 +2028,7 @@ public final class ActivityStackSupervisor implements DisplayListener { continueUpdateBounds(HOME_STACK_ID); for (int i = mResizingTasksDuringAnimation.size() - 1; i >= 0; i--) { final int taskId = mResizingTasksDuringAnimation.valueAt(i); - if (anyTaskForIdLocked(taskId) != null) { + if (anyTaskForIdLocked(taskId, !RESTORE_FROM_RECENTS, INVALID_STACK_ID) != null) { mWindowManager.setTaskDockedResizing(taskId, false); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a882607cc9536..08b7feeed9d24 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5230,8 +5230,8 @@ public class WindowManagerService extends IWindowManager.Stub synchronized (mWindowMap) { Task task = mTaskIdToTask.get(taskId); if (task == null) { - throw new IllegalArgumentException("setTaskDockedResizing: taskId " + taskId - + " not found."); + Slog.w(TAG, "setTaskDockedResizing: taskId " + taskId + " not found."); + return; } task.setDragResizing(resizing, DRAG_RESIZE_MODE_DOCKED_DIVIDER); }