From 1777021fcf989c0a1d2b7aa533a7b464ad85a807 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Mon, 22 Jan 2018 20:01:21 +0100 Subject: [PATCH] Fix NPE when creating remote animations Test: go/wm-smoke Bug: 72302602 Change-Id: Ifbae370ea559a9fda5ca442ceef0f6db8229466b --- .../server/wm/RemoteAnimationController.java | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/wm/RemoteAnimationController.java b/services/core/java/com/android/server/wm/RemoteAnimationController.java index 688b4ffcee4b..8515dcb69970 100644 --- a/services/core/java/com/android/server/wm/RemoteAnimationController.java +++ b/services/core/java/com/android/server/wm/RemoteAnimationController.java @@ -99,11 +99,15 @@ class RemoteAnimationController { } private RemoteAnimationTarget[] createAnimations() { - final RemoteAnimationTarget[] result = new RemoteAnimationTarget[mPendingAnimations.size()]; + final ArrayList targets = new ArrayList<>(); for (int i = mPendingAnimations.size() - 1; i >= 0; i--) { - result[i] = mPendingAnimations.get(i).createRemoteAppAnimation(); + final RemoteAnimationTarget target = + mPendingAnimations.get(i).createRemoteAppAnimation(); + if (target != null) { + targets.add(target); + } } - return result; + return targets.toArray(new RemoteAnimationTarget[targets.size()]); } private void onAnimationFinished() { @@ -145,9 +149,17 @@ class RemoteAnimationController { } RemoteAnimationTarget createRemoteAppAnimation() { - return new RemoteAnimationTarget(mAppWindowToken.getTask().mTaskId, getMode(), + final Task task = mAppWindowToken.getTask(); + final WindowState mainWindow = mAppWindowToken.findMainWindow(); + if (task == null) { + return null; + } + if (mainWindow == null) { + return null; + } + return new RemoteAnimationTarget(task.mTaskId, getMode(), mCapturedLeash, !mAppWindowToken.fillsParent(), - mAppWindowToken.findMainWindow().mWinAnimator.mLastClipRect, + mainWindow.mWinAnimator.mLastClipRect, mAppWindowToken.getPrefixOrderIndex(), mPosition, mStackBounds); } -- 2.11.0