summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/SurfaceControl.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 5deee11ba11e..ed8b0053e5bf 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -1580,6 +1580,20 @@ public class SurfaceControl implements Parcelable {
*/
public Transaction destroy(SurfaceControl sc) {
sc.checkNotReleased();
+
+ /**
+ * Perhaps it's safer to transfer the close guard to the Transaction
+ * but then we have a whole wonky scenario regarding merging, multiple
+ * close-guards per transaction etc...the whole scenario is kind of wonky
+ * and it seems really we'd like to just be able to call release here
+ * but the WindowManager has some code that looks like
+ * --- destroyInTransaction(a)
+ * --- reparentChildrenInTransaction(a)
+ * so we need to ensure the SC remains valid until the transaction
+ * is applied.
+ */
+ sc.mCloseGuard.close();
+
nativeDestroy(mNativeObject, sc.mNativeObject);
return this;
}