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

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

SurfacePackage: Add release method

Oversight, the SurfacePackage holds a reference to the SurfaceControl
which is protected by a close-guard. We need a way to close it
explicitly. Going to follow up with a patch to have SurfaceView
manage the lifetime when the SurfacePackage is consumed, but want
to make sure this explicit release gets in ASAP.

Bug: 149591513
Test: Existing tests pass
Change-Id: I7276a2440c38cc6d859b79b4c3ee57bc122ce2a6
parent 59624b21
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -53616,6 +53616,7 @@ package android.view {
  public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable {
    method public int describeContents();
    method public void release();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControlViewHost.SurfacePackage> CREATOR;
  }
+11 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ public class SurfaceControlViewHost {
     * a SurfaceView by calling {@link SurfaceView#setChildSurfacePackage}.
     */
    public static final class SurfacePackage implements Parcelable {
        private final SurfaceControl mSurfaceControl;
        private SurfaceControl mSurfaceControl;
        private final IAccessibilityEmbeddedConnection mAccessibilityEmbeddedConnection;

        SurfacePackage(SurfaceControl sc, IAccessibilityEmbeddedConnection connection) {
@@ -97,6 +97,16 @@ public class SurfaceControlViewHost {
            out.writeStrongBinder(mAccessibilityEmbeddedConnection.asBinder());
        }

        /**
         * Release the SurfaceControl associated with the SurfacePackage.
         */
        public void release() {
            if (mSurfaceControl != null) {
                mSurfaceControl.release();
             }
             mSurfaceControl = null;
        }

        public static final @NonNull Creator<SurfacePackage> CREATOR
             = new Creator<SurfacePackage>() {
                     public SurfacePackage createFromParcel(Parcel in) {