Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff910d2b authored by Robert Carr's avatar Robert Carr
Browse files

SurfaceControl: Close CloseGuard when destroying surface in transaction.

As this signifies releasing the native resources protected by the guard. See comment
for more indepth discussion.

Bug: 78629612
Test: Manual.
Change-Id: Iee9fe9558b1fee171789580c48f4890c2be1c219
parent 9411ab15
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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;
        }