diff options
| author | Vishnu Nair <vishnun@google.com> | 2021-04-12 18:31:52 -0700 |
|---|---|---|
| committer | Vishnu Nair <vishnun@google.com> | 2021-04-12 18:31:52 -0700 |
| commit | cbd40e683ffb9edbe2c59eea9ef804d16fc1f46e (patch) | |
| tree | 75abc4271faf71c32d4c5cddb6dd0118004aa019 /core/java/android/view/SurfaceControl.java | |
| parent | 9ad3b820bef9de56d1e07f9857bddaeaf2df768a (diff) | |
Only clear SurfaceControl.Transaction when parcelling as a return value
Fix this by have writeToParcel respect PARCELABLE_WRITE_RETURN_VALUE.
Fixes: b/185178151
Test: go/wm-smoke
Change-Id: Ic146d1bbb9a68be6c4f4fea10c65f81b1b36d760
Diffstat (limited to 'core/java/android/view/SurfaceControl.java')
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 85a4f2035901..e7b31aa8daf0 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -104,6 +104,7 @@ public final class SurfaceControl implements Parcelable { private static native void nativeApplyTransaction(long transactionObj, boolean sync); private static native void nativeMergeTransaction(long transactionObj, long otherTransactionObj); + private static native void nativeClearTransaction(long transactionObj); private static native void nativeSetAnimationTransaction(long transactionObj); private static native void nativeSetEarlyWakeupStart(long transactionObj); private static native void nativeSetEarlyWakeupEnd(long transactionObj); @@ -2604,6 +2605,19 @@ public final class SurfaceControl implements Parcelable { } /** + * Clear the transaction object, without applying it. + * + * @hide + */ + public void clear() { + mResizedSurfaces.clear(); + mReparentedSurfaces.clear(); + if (mNativeObject != 0) { + nativeClearTransaction(mNativeObject); + } + } + + /** * Release the native transaction object, without applying it. */ @Override @@ -3428,10 +3442,14 @@ public final class SurfaceControl implements Parcelable { public void writeToParcel(@NonNull Parcel dest, @WriteFlags int flags) { if (mNativeObject == 0) { dest.writeInt(0); - } else { - dest.writeInt(1); + return; } + + dest.writeInt(1); nativeWriteTransactionToParcel(mNativeObject, dest); + if ((flags & Parcelable.PARCELABLE_WRITE_RETURN_VALUE) != 0) { + nativeClearTransaction(mNativeObject); + } } private void readFromParcel(Parcel in) { |
