diff options
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 14 |
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; } |