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
This commit is contained in:
Garfield Tan
2020-12-10 11:58:24 -08:00
parent fe52b87212
commit 41b8b1fab1

View File

@@ -4092,7 +4092,7 @@ class Task extends WindowContainer<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<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())