From dec4430d52f038148f53a9df9958e3553c8a5216 Mon Sep 17 00:00:00 2001 From: Winson Date: Fri, 1 Apr 2016 11:25:35 -0700 Subject: [PATCH] Always force update the transform when calling from RecentsImpl. - Workaround for crash in RecentsImpl where we could be retrieving the transform for a task that is not at the front of the stack (can happen if time changes, etc.) However, since we only use the size for the transition, we can always force-update the transform. Bug: 27849282 Change-Id: I86eee4c158748e4f13a2daeac5cf040c0874f967 --- .../src/com/android/systemui/recents/RecentsImpl.java | 3 +++ .../systemui/recents/views/TaskStackLayoutAlgorithm.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java index 43d627d9e13a5..ec873ec1bdcb1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java @@ -794,6 +794,9 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener synchronized (mHeaderBarLock) { int toHeaderWidth = (int) toTransform.rect.width(); int toHeaderHeight = (int) (mHeaderBar.getMeasuredHeight() * toTransform.scale); + if (toHeaderWidth <= 0 || toHeaderHeight <= 0) { + return null; + } boolean disabledInSafeMode = !toTask.isSystemApp && ssp.isInSafeMode(); mHeaderBar.onTaskViewSizeChanged((int) toTransform.rect.width(), (int) toTransform.rect.height()); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java index 25083040df1d8..1cddde73e4ace 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java @@ -803,8 +803,9 @@ public class TaskStackLayoutAlgorithm { public TaskViewTransform getStackTransformScreenCoordinates(Task task, float stackScroll, TaskViewTransform transformOut, TaskViewTransform frontTransform) { Rect windowRect = Recents.getSystemServices().getWindowRect(); - TaskViewTransform transform = getStackTransform(task, stackScroll, transformOut, - frontTransform); + TaskViewTransform transform = getStackTransform(task, stackScroll, mFocusState, + transformOut, frontTransform, true /* forceUpdate */, + false /* ignoreTaskOverrides */); transform.rect.offset(windowRect.left, windowRect.top); return transform; }