summaryrefslogtreecommitdiff
path: root/core/java/android/view/SurfaceControl.java
diff options
context:
space:
mode:
authorVishnu Nair <vishnun@google.com>2021-04-12 18:31:52 -0700
committerVishnu Nair <vishnun@google.com>2021-04-12 18:31:52 -0700
commitcbd40e683ffb9edbe2c59eea9ef804d16fc1f46e (patch)
tree75abc4271faf71c32d4c5cddb6dd0118004aa019 /core/java/android/view/SurfaceControl.java
parent9ad3b820bef9de56d1e07f9857bddaeaf2df768a (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.java22
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) {