Merge "Prevent updating invlid child task surfaces in the sync queue" into tm-qpr-dev

This commit is contained in:
Jerry Chang
2022-08-08 12:59:42 +00:00
committed by Android (Google) Code Review

View File

@@ -33,6 +33,7 @@ import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.IBinder;
import android.util.Slog;
import android.util.SparseArray;
import android.view.RemoteAnimationTarget;
import android.view.SurfaceControl;
@@ -376,7 +377,13 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener {
SurfaceControl leash, boolean firstAppeared) {
final Point taskPositionInParent = taskInfo.positionInParent;
mSyncQueue.runInSync(t -> {
t.setWindowCrop(leash, null);
// The task surface might be released before running in the sync queue for the case like
// trampoline launch, so check if the surface is valid before processing it.
if (!leash.isValid()) {
Slog.w(TAG, "Skip updating invalid child task surface of task#" + taskInfo.taskId);
return;
}
t.setCrop(leash, null);
t.setPosition(leash, taskPositionInParent.x, taskPositionInParent.y);
if (firstAppeared && !ENABLE_SHELL_TRANSITIONS) {
t.setAlpha(leash, 1f);