diff options
| author | Robert Carr <racarr@google.com> | 2022-04-05 22:31:11 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-05 22:31:11 +0000 |
| commit | 05f5f504bc34774b33bf8a7bb62cd7eaf38e7fca (patch) | |
| tree | e30bcd53843ad250472be6c9c863b0820b3dc149 | |
| parent | cf608908b385310c9ea92e430fe65de6e36f52f9 (diff) | |
| parent | c54faf3e691b3d952f649756578eab6f8a5d3208 (diff) | |
DO NOT MERGE: WM: Call Transaction#sanitize am: c54faf3e69
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16812184
Change-Id: Icbd17c0b53d136b043fd6a85607f15cefb6c33a8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 10 | ||||
| -rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 4 |
3 files changed, 20 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 4dc9807aca5d..1e290920b00b 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -239,6 +239,7 @@ public final class SurfaceControl implements Parcelable { private static native int nativeGetGPUContextPriority(); private static native void nativeSetTransformHint(long nativeObject, int transformHint); private static native int nativeGetTransformHint(long nativeObject); + private static native void nativeSanitize(long transactionObject); @Nullable @GuardedBy("mLock") @@ -3439,7 +3440,14 @@ public final class SurfaceControl implements Parcelable { return this; } - /** + /** + * @hide + */ + public void sanitize() { + nativeSanitize(mNativeObject); + } + + /** * Merge the other transaction into this transaction, clearing the * other transaction as if it had been applied. * diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 7f99e2998b13..4cb258dc0bbd 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -875,6 +875,11 @@ static void nativeSetDropInputMode(JNIEnv* env, jclass clazz, jlong transactionO transaction->setDropInputMode(ctrl, static_cast<gui::DropInputMode>(mode)); } +static void nativeSanitize(JNIEnv* env, jclass clazz, jlong transactionObj) { + auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); + transaction->sanitize(); +} + static jlongArray nativeGetPhysicalDisplayIds(JNIEnv* env, jclass clazz) { const auto displayIds = SurfaceComposerClient::getPhysicalDisplayIds(); jlongArray array = env->NewLongArray(displayIds.size()); @@ -2003,6 +2008,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetTrustedOverlay }, {"nativeSetDropInputMode", "(JJI)V", (void*)nativeSetDropInputMode}, + {"nativeSanitize", "(J)V", + (void*) nativeSanitize } // clang-format on }; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fac953910e92..b69182f41b76 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2643,6 +2643,10 @@ public class WindowManagerService extends IWindowManager.Stub void finishDrawingWindow(Session session, IWindow client, @Nullable SurfaceControl.Transaction postDrawTransaction) { + if (postDrawTransaction != null) { + postDrawTransaction.sanitize(); + } + final long origId = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { |
