From 21ea187cfb69b87721743dbdbe63e05c7de9d491 Mon Sep 17 00:00:00 2001 From: chaviw Date: Thu, 28 May 2020 17:26:38 -0700 Subject: [PATCH] Allow Tasks to set some properties for migrated SC Tasks had an overriden makeSurface that automatically made it a color layer and added metadata. If the Task SC is transferred, it won't get those values since we no longer are calling makeSurface. Instead have Task override setInitialSurfaceControlProperties so it can set the desired values on the builder. Test: Exit pip and see that new Task is color and has taskId Bug: 153579514 Change-Id: I78b887fb7bf4e273ed8e8283ae6287f8fcfb2596 --- services/core/java/com/android/server/wm/Task.java | 5 +++-- .../core/java/com/android/server/wm/WindowContainer.java | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 7efa87c43754a..7113a15da1bfb 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3209,8 +3209,9 @@ class Task extends WindowContainer { } @Override - SurfaceControl.Builder makeSurface() { - return super.makeSurface().setColorLayer().setMetadata(METADATA_TASK_ID, mTaskId); + void setInitialSurfaceControlProperties(SurfaceControl.Builder b) { + b.setColorLayer().setMetadata(METADATA_TASK_ID, mTaskId); + super.setInitialSurfaceControlProperties(b); } boolean isTaskAnimating() { diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 1e4f309083a2c..46680662c030a 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -399,11 +399,11 @@ class WindowContainer extends ConfigurationContainer< } void createSurfaceControl(boolean force) { - setInitialSurfaceControlProperties(makeSurface().build()); + setInitialSurfaceControlProperties(makeSurface()); } - private void setInitialSurfaceControlProperties(SurfaceControl surfaceControl) { - setSurfaceControl(surfaceControl); + void setInitialSurfaceControlProperties(SurfaceControl.Builder b) { + setSurfaceControl(b.build()); getSyncTransaction().show(mSurfaceControl); onSurfaceShown(getSyncTransaction()); updateSurfacePosition(); @@ -431,7 +431,7 @@ class WindowContainer extends ConfigurationContainer< .setContainerLayer() .setName(getName()); - setInitialSurfaceControlProperties(b.build()); + setInitialSurfaceControlProperties(b); // If parent is null, the layer should be placed offscreen so reparent to null. Otherwise, // set to the available parent.