Loading core/java/android/view/SurfaceControl.java +5 −2 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.concurrent.Executor; import java.util.function.Consumer; Loading Loading @@ -463,7 +464,7 @@ public final class SurfaceControl implements Parcelable { /** * Called when new jank classifications are available. */ void onJankDataAvailable(JankData[] jankData); void onJankDataAvailable(@NonNull List<JankData> jankData); } Loading Loading @@ -2686,7 +2687,9 @@ public final class SurfaceControl implements Parcelable { * Adds a callback to be informed about SF's jank classification for this surface. * @hide */ public OnJankDataListenerRegistration addJankDataListener(OnJankDataListener listener) { @NonNull public OnJankDataListenerRegistration addOnJankDataListener( @NonNull OnJankDataListener listener) { return new OnJankDataListenerRegistration(this, listener); } Loading core/java/com/android/internal/jank/FrameTracker.java +3 −2 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.internal.util.FrameworkStatsLog; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.concurrent.TimeUnit; /** Loading Loading @@ -448,7 +449,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } @Override public void onJankDataAvailable(SurfaceControl.JankData[] jankData) { public void onJankDataAvailable(List<SurfaceControl.JankData> jankData) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onJankDataAvailable"); Loading Loading @@ -832,7 +833,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai /** adds the jank listener to the given surface */ public SurfaceControl.OnJankDataListenerRegistration addJankStatsListener( SurfaceControl.OnJankDataListener listener, SurfaceControl surfaceControl) { return surfaceControl.addJankDataListener(listener); return surfaceControl.addOnJankDataListener(listener); } } Loading core/jni/android_view_SurfaceControl.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -298,6 +298,11 @@ static struct { jmethodID ctor; } gFrameRateCategoryRateClassInfo; static struct { jclass clazz; jmethodID asList; } gUtilArrays; constexpr ui::Dataspace pickDataspaceFromColorMode(const ui::ColorMode colorMode) { switch (colorMode) { case ui::ColorMode::DISPLAY_P3: Loading Loading @@ -2206,10 +2211,13 @@ public: env->SetObjectArrayElement(jJankDataArray, i, jJankData); env->DeleteLocalRef(jJankData); } env->CallVoidMethod(target, gJankDataListenerClassInfo.onJankDataAvailable, jJankDataArray); jobject jJankDataList = env->CallStaticObjectMethod(gUtilArrays.clazz, gUtilArrays.asList, jJankDataArray); env->DeleteLocalRef(jJankDataArray); env->CallVoidMethod(target, gJankDataListenerClassInfo.onJankDataAvailable, jJankDataList); env->DeleteLocalRef(jJankDataList); env->DeleteLocalRef(target); return true; Loading Loading @@ -2858,7 +2866,7 @@ int register_android_view_SurfaceControl(JNIEnv* env) gJankDataListenerClassInfo.clazz = MakeGlobalRefOrDie(env, onJankDataListenerClazz); gJankDataListenerClassInfo.onJankDataAvailable = GetMethodIDOrDie(env, onJankDataListenerClazz, "onJankDataAvailable", "([Landroid/view/SurfaceControl$JankData;)V"); "(Ljava/util/List;)V"); jclass transactionCommittedListenerClazz = FindClassOrDie(env, "android/view/SurfaceControl$TransactionCommittedListener"); Loading Loading @@ -2933,6 +2941,10 @@ int register_android_view_SurfaceControl(JNIEnv* env) gStalledTransactionInfoClassInfo.frameNumber = GetFieldIDOrDie(env, stalledTransactionInfoClazz, "frameNumber", "J"); jclass utilArrays = FindClassOrDie(env, "java/util/Arrays"); gUtilArrays.clazz = MakeGlobalRefOrDie(env, utilArrays); gUtilArrays.asList = GetStaticMethodIDOrDie(env, utilArrays, "asList", "([Ljava/lang/Object;)Ljava/util/List;"); return err; } Loading core/tests/coretests/src/com/android/internal/jank/FrameTrackerTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import java.util.Arrays; import java.util.concurrent.TimeUnit; @SmallTest Loading Loading @@ -690,10 +691,9 @@ public class FrameTrackerTest { FrameTracker tracker, long durationMillis, long vsyncId, @JankType int jankType) { final ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class); doNothing().when(tracker).postCallback(captor.capture()); mListenerCapture.getValue().onJankDataAvailable(new JankData[] { new JankData(vsyncId, jankType, FRAME_TIME_60Hz, FRAME_TIME_60Hz, TimeUnit.MILLISECONDS.toNanos(durationMillis)) }); mListenerCapture.getValue().onJankDataAvailable(Arrays.asList(new JankData( vsyncId, jankType, FRAME_TIME_60Hz, FRAME_TIME_60Hz, TimeUnit.MILLISECONDS.toNanos(durationMillis)))); captor.getValue().run(); } } Loading
core/java/android/view/SurfaceControl.java +5 −2 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.concurrent.Executor; import java.util.function.Consumer; Loading Loading @@ -463,7 +464,7 @@ public final class SurfaceControl implements Parcelable { /** * Called when new jank classifications are available. */ void onJankDataAvailable(JankData[] jankData); void onJankDataAvailable(@NonNull List<JankData> jankData); } Loading Loading @@ -2686,7 +2687,9 @@ public final class SurfaceControl implements Parcelable { * Adds a callback to be informed about SF's jank classification for this surface. * @hide */ public OnJankDataListenerRegistration addJankDataListener(OnJankDataListener listener) { @NonNull public OnJankDataListenerRegistration addOnJankDataListener( @NonNull OnJankDataListener listener) { return new OnJankDataListenerRegistration(this, listener); } Loading
core/java/com/android/internal/jank/FrameTracker.java +3 −2 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.internal.util.FrameworkStatsLog; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.concurrent.TimeUnit; /** Loading Loading @@ -448,7 +449,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } @Override public void onJankDataAvailable(SurfaceControl.JankData[] jankData) { public void onJankDataAvailable(List<SurfaceControl.JankData> jankData) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onJankDataAvailable"); Loading Loading @@ -832,7 +833,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai /** adds the jank listener to the given surface */ public SurfaceControl.OnJankDataListenerRegistration addJankStatsListener( SurfaceControl.OnJankDataListener listener, SurfaceControl surfaceControl) { return surfaceControl.addJankDataListener(listener); return surfaceControl.addOnJankDataListener(listener); } } Loading
core/jni/android_view_SurfaceControl.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -298,6 +298,11 @@ static struct { jmethodID ctor; } gFrameRateCategoryRateClassInfo; static struct { jclass clazz; jmethodID asList; } gUtilArrays; constexpr ui::Dataspace pickDataspaceFromColorMode(const ui::ColorMode colorMode) { switch (colorMode) { case ui::ColorMode::DISPLAY_P3: Loading Loading @@ -2206,10 +2211,13 @@ public: env->SetObjectArrayElement(jJankDataArray, i, jJankData); env->DeleteLocalRef(jJankData); } env->CallVoidMethod(target, gJankDataListenerClassInfo.onJankDataAvailable, jJankDataArray); jobject jJankDataList = env->CallStaticObjectMethod(gUtilArrays.clazz, gUtilArrays.asList, jJankDataArray); env->DeleteLocalRef(jJankDataArray); env->CallVoidMethod(target, gJankDataListenerClassInfo.onJankDataAvailable, jJankDataList); env->DeleteLocalRef(jJankDataList); env->DeleteLocalRef(target); return true; Loading Loading @@ -2858,7 +2866,7 @@ int register_android_view_SurfaceControl(JNIEnv* env) gJankDataListenerClassInfo.clazz = MakeGlobalRefOrDie(env, onJankDataListenerClazz); gJankDataListenerClassInfo.onJankDataAvailable = GetMethodIDOrDie(env, onJankDataListenerClazz, "onJankDataAvailable", "([Landroid/view/SurfaceControl$JankData;)V"); "(Ljava/util/List;)V"); jclass transactionCommittedListenerClazz = FindClassOrDie(env, "android/view/SurfaceControl$TransactionCommittedListener"); Loading Loading @@ -2933,6 +2941,10 @@ int register_android_view_SurfaceControl(JNIEnv* env) gStalledTransactionInfoClassInfo.frameNumber = GetFieldIDOrDie(env, stalledTransactionInfoClazz, "frameNumber", "J"); jclass utilArrays = FindClassOrDie(env, "java/util/Arrays"); gUtilArrays.clazz = MakeGlobalRefOrDie(env, utilArrays); gUtilArrays.asList = GetStaticMethodIDOrDie(env, utilArrays, "asList", "([Ljava/lang/Object;)Ljava/util/List;"); return err; } Loading
core/tests/coretests/src/com/android/internal/jank/FrameTrackerTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import java.util.Arrays; import java.util.concurrent.TimeUnit; @SmallTest Loading Loading @@ -690,10 +691,9 @@ public class FrameTrackerTest { FrameTracker tracker, long durationMillis, long vsyncId, @JankType int jankType) { final ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class); doNothing().when(tracker).postCallback(captor.capture()); mListenerCapture.getValue().onJankDataAvailable(new JankData[] { new JankData(vsyncId, jankType, FRAME_TIME_60Hz, FRAME_TIME_60Hz, TimeUnit.MILLISECONDS.toNanos(durationMillis)) }); mListenerCapture.getValue().onJankDataAvailable(Arrays.asList(new JankData( vsyncId, jankType, FRAME_TIME_60Hz, FRAME_TIME_60Hz, TimeUnit.MILLISECONDS.toNanos(durationMillis)))); captor.getValue().run(); } }