From bb1449b392b4fb14f17fa747c2261d7195405df3 Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Fri, 23 Mar 2012 16:11:14 -0700 Subject: [PATCH] Reset layout needed at each animation step. The member variable WindowAnimator.mPendingLayoutChanges was never being reset to 0. Consequently once it was set it was causing endless calls to the layout method. Fixes bug 6208114, 6220403, 6219546. Fixed NPE in RecentsPanelView. Change-Id: Ie529b8f31e535543cb5ae0af9447146306b14eeb --- .../systemui/recent/RecentsPanelView.java | 7 +-- .../com/android/server/wm/WindowAnimator.java | 19 ++++++- .../server/wm/WindowManagerService.java | 53 +++++++++++-------- 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java index 66cb32c48f18d..4d5c3420b5eda 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java @@ -615,10 +615,11 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener if (!mFirstScreenful && tasks.size() == 0) { return; } - mNumItemsWaitingForThumbnailsAndIcons = - mFirstScreenful ? tasks.size() : mRecentTaskDescriptions.size(); + mNumItemsWaitingForThumbnailsAndIcons = mFirstScreenful + ? tasks.size() : mRecentTaskDescriptions == null + ? 0 : mRecentTaskDescriptions.size(); if (mRecentTaskDescriptions == null) { - mRecentTaskDescriptions = new ArrayList(tasks); + mRecentTaskDescriptions = new ArrayList(tasks); } else { mRecentTaskDescriptions.addAll(tasks); } diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index b3dbee192cfd5..28dd0ba1ad196 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -23,7 +23,7 @@ import com.android.internal.policy.impl.PhoneWindowManager; * on behalf of WindowManagerService. */ public class WindowAnimator { - private static final String TAG = "WindowAnimations"; + private static final String TAG = "WindowAnimator"; final WindowManagerService mService; final Context mContext; @@ -67,8 +67,24 @@ public class WindowAnimator { final int NAT = mService.mAppTokens.size(); for (i=0; i