From 528a1061f1989618319cc378a397647a196872f0 Mon Sep 17 00:00:00 2001 From: Hongwei Wang Date: Tue, 14 Dec 2021 10:26:23 -0800 Subject: [PATCH] Fix NPE in PinnedTaskController Bug: 210570569 Test: follow the steps in bug report Change-Id: I8d09142e277e0d7bae21dd68db52fefe71a1bf95 --- .../java/com/android/server/wm/PinnedTaskController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/PinnedTaskController.java b/services/core/java/com/android/server/wm/PinnedTaskController.java index 9ad30da1cb545..1da0fe731709f 100644 --- a/services/core/java/com/android/server/wm/PinnedTaskController.java +++ b/services/core/java/com/android/server/wm/PinnedTaskController.java @@ -243,7 +243,8 @@ class PinnedTaskController { int oldRotation, int newRotation) { final Rect bounds = mDestRotatedBounds; final PictureInPictureSurfaceTransaction pipTx = mPipTransaction; - if (bounds == null && pipTx == null) { + final boolean emptyPipPositionTx = pipTx == null || pipTx.mPosition == null; + if (bounds == null && emptyPipPositionTx) { return; } final TaskDisplayArea taskArea = mDisplayContent.getDefaultTaskDisplayArea(); @@ -255,7 +256,7 @@ class PinnedTaskController { mDestRotatedBounds = null; mPipTransaction = null; final Rect areaBounds = taskArea.getBounds(); - if (pipTx != null && pipTx.mPosition != null) { + if (!emptyPipPositionTx) { // The transaction from recents animation is in old rotation. So the position needs to // be rotated. float dx = pipTx.mPosition.x;