From 0f50d93d4971e1612b5898a7a8fca7464654a2a9 Mon Sep 17 00:00:00 2001 From: Pascal Muetschard Date: Tue, 13 Dec 2022 13:45:58 +0100 Subject: [PATCH] Expose the flush jank data transaction via JNI. Bug: 235178314 Bug: 221393601 Bug: 225105422 Test: atest SurfaceFlinger_test Change-Id: I119a5264dfb7b831dc3d0bf051ddcf1a0ffe7e60 --- core/java/android/view/SurfaceControl.java | 10 ++++++++++ core/jni/android_view_SurfaceControl.cpp | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 7da141bc392ad..8e0941144b51e 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -173,6 +173,7 @@ public final class SurfaceControl implements Parcelable { boolean isTrustedOverlay); private static native void nativeSetDropInputMode( long transactionObj, long nativeObject, int flags); + private static native void nativeSurfaceFlushJankData(long nativeSurfaceObject); private static native boolean nativeClearContentFrameStats(long nativeObject); private static native boolean nativeGetContentFrameStats(long nativeObject, WindowContentFrameStats outStats); private static native boolean nativeClearAnimationFrameStats(); @@ -3884,6 +3885,15 @@ public final class SurfaceControl implements Parcelable { return this; } + /** + * Sends a flush jank data transaction for the given surface. + * @hide + */ + public static void sendSurfaceFlushJankData(SurfaceControl sc) { + sc.checkNotReleased(); + nativeSurfaceFlushJankData(sc.mNativeObject); + } + /** * @hide */ diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 97a0f50e760d8..5ca71b89f4834 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -951,6 +951,11 @@ static void nativeSetDropInputMode(JNIEnv* env, jclass clazz, jlong transactionO transaction->setDropInputMode(ctrl, static_cast(mode)); } +static void nativeSurfaceFlushJankData(JNIEnv* env, jclass clazz, jlong nativeObject) { + SurfaceControl* const ctrl = reinterpret_cast(nativeObject); + SurfaceComposerClient::Transaction::sendSurfaceFlushJankDataTransaction(ctrl); +} + static void nativeSanitize(JNIEnv* env, jclass clazz, jlong transactionObj) { auto transaction = reinterpret_cast(transactionObj); transaction->sanitize(); @@ -2246,6 +2251,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeGetLayerId }, {"nativeSetDropInputMode", "(JJI)V", (void*)nativeSetDropInputMode }, + {"nativeSurfaceFlushJankData", "(J)V", + (void*)nativeSurfaceFlushJankData }, {"nativeAddTransactionCommittedListener", "(JLandroid/view/SurfaceControl$TransactionCommittedListener;)V", (void*) nativeAddTransactionCommittedListener }, {"nativeSetTrustedPresentationCallback", "(JJJLandroid/view/SurfaceControl$TrustedPresentationThresholds;)V",