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

Commit 66b74c3c authored by Pascal Mütschard's avatar Pascal Mütschard
Browse files

Partial revert of the filtering added for the Jank API.

This filtering appears to cause a rare crash (likely a race) and
isn't really necessary, as we still keep the filtering of
invocations for listeners that were force-removed.

Bug: b/379084990
Flag: EXEMPT bug fix
Test: FrameworksCoreTests manual
Change-Id: Id4a3837382241ec11b0388df933158e50201a393
parent 55fc3d50
Loading
Loading
Loading
Loading
+4 −24
Original line number Diff line number Diff line
@@ -2201,29 +2201,9 @@ public:
            return false;
        }

        // Compute the count of data items we'll actually forward to Java.
        size_t count = 0;
        if (mRemovedVsyncId <= 0) {
            count = jankData.size();
        } else {
            for (const gui::JankData& frame : jankData) {
                if (frame.frameVsyncId <= mRemovedVsyncId) {
                    count++;
                }
            }
        }

        if (count == 0) {
            return false;
        }

        jobjectArray jJankDataArray = env->NewObjectArray(count, gJankDataClassInfo.clazz, nullptr);
        for (size_t i = 0, j = 0; i < jankData.size() && j < count; i++) {
            // Filter any data for frames past our removal vsync.
            if (mRemovedVsyncId > 0 && jankData[i].frameVsyncId > mRemovedVsyncId) {
                continue;
            }

        jobjectArray jJankDataArray =
                env->NewObjectArray(jankData.size(), gJankDataClassInfo.clazz, nullptr);
        for (size_t i = 0; i < jankData.size(); i++) {
            // The exposed constants in SurfaceControl are simplified, so we need to translate the
            // jank type we get from SF to what is exposed in Java.
            int sfJankType = jankData[i].jankType;
@@ -2250,7 +2230,7 @@ public:
                                   jankData[i].frameVsyncId, javaJankType,
                                   jankData[i].frameIntervalNs, jankData[i].scheduledAppFrameTimeNs,
                                   jankData[i].actualAppFrameTimeNs);
            env->SetObjectArrayElement(jJankDataArray, j++, jJankData);
            env->SetObjectArrayElement(jJankDataArray, i, jJankData);
            env->DeleteLocalRef(jJankData);
        }