From 41b8b1fab172137b2d33789cf366f5bc2515c640 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Thu, 10 Dec 2020 11:58:24 -0800 Subject: [PATCH] Avoid calling getTopMostTask() twice in Task#fillTaskInfo() getTopMostTask() is a expensive recursive call that we know won't change result in a single fillTaskInfo() call, so let's stop calling it twice in a request. Bug: 174209413 Test: Builds. Change-Id: I8239f6e812d41d636573d33f2053bf361db3fc8d --- services/core/java/com/android/server/wm/Task.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 8564cbc02df82..a0d2cfa1baaa3 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -4092,7 +4092,7 @@ class Task extends WindowContainer { info.positionInParent = getRelativePosition(); info.parentBounds = getParentBounds(); - info.pictureInPictureParams = getPictureInPictureParams(); + info.pictureInPictureParams = getPictureInPictureParams(top); info.topActivityInfo = mReuseActivitiesReport.top != null ? mReuseActivitiesReport.top.info : null; @@ -4109,7 +4109,10 @@ class Task extends WindowContainer { } @Nullable PictureInPictureParams getPictureInPictureParams() { - final Task top = getTopMostTask(); + return getPictureInPictureParams(getTopMostTask()); + } + + private @Nullable PictureInPictureParams getPictureInPictureParams(Task top) { if (top == null) return null; final ActivityRecord rootActivity = top.getRootActivity(); return (rootActivity == null || rootActivity.pictureInPictureArgs.empty())