Only refresh TaskThumbnailViewDeprecated if runningTaskShowScreenshot has changed
- This is a follow-up of ag/28922223, which caused a RECENTS_SCROLLING jank regression - The regression is probably caused by TaskThumbnailViewDeprecated unnecessarily redrawing, the fix is to only redraw when needed - Also combined setShouldShowScreenshot and refreshThumbnails into a single method, so we can easily check inside TaskView if a refresh is necessary - Centralize screenshotTasks logic into RecentsViewUtils, and centralize thumbnailView refreshing inside TaksView.setShouldShowScreenshot Fix: 362294538 Test: Invoke Omnient or Screenshot hardware button on live tile, verify running task switches to screenshot after overlay closes Test: Select/Screenshot swithces to screenshot normally Flag: EXEMPT BUG_FIX Change-Id: I7c6e73e52ebf18e7c59bb9afea029246b92681d2
This commit is contained in:
@@ -3058,14 +3058,15 @@ public abstract class RecentsView<
|
||||
}
|
||||
|
||||
private void setRunningTaskViewShowScreenshot(boolean showScreenshot) {
|
||||
setRunningTaskViewShowScreenshot(showScreenshot, /*updatedThumbnails=*/null);
|
||||
}
|
||||
|
||||
private void setRunningTaskViewShowScreenshot(boolean showScreenshot,
|
||||
@Nullable Map<Integer, ThumbnailData> updatedThumbnails) {
|
||||
mRunningTaskShowScreenshot = showScreenshot;
|
||||
TaskView runningTaskView = getRunningTaskView();
|
||||
if (runningTaskView != null) {
|
||||
runningTaskView.setShouldShowScreenshot(mRunningTaskShowScreenshot);
|
||||
if (!enableRefactorTaskThumbnail()) {
|
||||
runningTaskView.getTaskContainers().forEach(
|
||||
taskContainer -> taskContainer.getThumbnailViewDeprecated().refresh());
|
||||
}
|
||||
runningTaskView.setShouldShowScreenshot(mRunningTaskShowScreenshot, updatedThumbnails);
|
||||
}
|
||||
if (enableRefactorTaskThumbnail()) {
|
||||
mRecentsViewModel.setRunningTaskShowScreenshot(showScreenshot);
|
||||
@@ -6154,20 +6155,12 @@ public abstract class RecentsView<
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Integer, ThumbnailData> updatedThumbnails = mRecentsViewUtils.screenshotTasks(taskView,
|
||||
mRecentsAnimationController);
|
||||
if (enableRefactorTaskThumbnail()) {
|
||||
mHelper.switchToScreenshot(taskView, mRecentsAnimationController, onFinishRunnable);
|
||||
mHelper.switchToScreenshot(taskView, updatedThumbnails, onFinishRunnable);
|
||||
} else {
|
||||
setRunningTaskViewShowScreenshot(true);
|
||||
for (TaskContainer container : taskView.getTaskContainers()) {
|
||||
ThumbnailData thumbnailData =
|
||||
mRecentsAnimationController.screenshotTask(container.getTask().key.id);
|
||||
TaskThumbnailViewDeprecated thumbnailView = container.getThumbnailViewDeprecated();
|
||||
if (thumbnailData != null) {
|
||||
thumbnailView.setThumbnail(container.getTask(), thumbnailData);
|
||||
} else {
|
||||
thumbnailView.refresh();
|
||||
}
|
||||
}
|
||||
setRunningTaskViewShowScreenshot(true, updatedThumbnails);
|
||||
ViewUtils.postFrameDrawn(taskView, onFinishRunnable);
|
||||
}
|
||||
}
|
||||
@@ -6186,8 +6179,7 @@ public abstract class RecentsView<
|
||||
if (enableRefactorTaskThumbnail()) {
|
||||
mHelper.switchToScreenshot(taskView, thumbnailDatas, onFinishRunnable);
|
||||
} else {
|
||||
taskView.setShouldShowScreenshot(true);
|
||||
taskView.refreshThumbnails(thumbnailDatas);
|
||||
taskView.setShouldShowScreenshot(true, thumbnailDatas);
|
||||
ViewUtils.postFrameDrawn(taskView, onFinishRunnable);
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user