Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 695c523e authored by Pascal Mütschard's avatar Pascal Mütschard Committed by Android (Google) Code Review
Browse files

Merge "Fix API lint errors on the Jank API." into main

parents 00c3e670 522790bd
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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);

    }

@@ -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);
    }

+3 −2
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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");
@@ -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);
        }
    }

+16 −4
Original line number Diff line number Diff line
@@ -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:
@@ -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;
@@ -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");
@@ -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;
}

+4 −4
Original line number Diff line number Diff line
@@ -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
@@ -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();
    }
}