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

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

Merge "Stop using HWUI callbacks for jank." into main

parents d986d3e1 be4c6cdd
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
        mRendererWrapper = mSurfaceOnly ? null : renderer;
        mMetricsWrapper = mSurfaceOnly ? null : metrics;
        mViewRoot = mSurfaceOnly ? null : viewRootWrapper;
        mObserver = mSurfaceOnly
        mObserver = mSurfaceOnly || (Flags.useSfFrameDuration() && Flags.ignoreHwuiIsFirstFrame())
                ? null
                : new HardwareRendererObserver(this, mMetricsWrapper.getTiming(),
                        mHandler, /* waitForPresentTime= */ false);
@@ -581,7 +581,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
    }

    private boolean callbacksReceived(JankInfo info) {
        return mSurfaceOnly
        return mObserver == null
                ? info.surfaceControlCallbackFired
                : info.hwuiCallbackFired && info.surfaceControlCallbackFired;
    }
@@ -619,7 +619,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
        for (int i = 0; i < mJankInfos.size(); i++) {
            JankInfo info = mJankInfos.valueAt(i);
            final boolean isFirstDrawn = !mSurfaceOnly && info.isFirstFrame;
            if (isFirstDrawn) {
            if (isFirstDrawn && !Flags.ignoreHwuiIsFirstFrame()) {
                continue;
            }
            if (info.frameVsyncId > mEndVsyncId) {
@@ -656,7 +656,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                }
                // TODO (b/174755489): Early latch currently gets fired way too often, so we have
                // to ignore it for now.
                if (!mSurfaceOnly && !info.hwuiCallbackFired) {
                if (mObserver != null && !info.hwuiCallbackFired) {
                    markEvent("FT#MissedHWUICallback", info.frameVsyncId);
                    Log.w(TAG, "Missing HWUI jank callback for vsyncId: " + info.frameVsyncId
                            + ", CUJ=" + name);
@@ -782,17 +782,21 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
         * @param observer observer
         */
        public void addObserver(HardwareRendererObserver observer) {
            if (observer != null) {
                mRenderer.addObserver(observer);
            }
        }

        /**
         * Wrapper method.
         * @param observer observer
         */
        public void removeObserver(HardwareRendererObserver observer) {
            if (observer != null) {
                mRenderer.removeObserver(observer);
            }
        }
    }

    public static class ViewRootWrapper {
        private final ViewRootImpl mViewRoot;
+7 −0
Original line number Diff line number Diff line
@@ -8,3 +8,10 @@ flag {
  bug: "354763298"
  is_fixed_read_only: true
}
flag {
  name: "ignore_hwui_is_first_frame"
  namespace: "window_surfaces"
  description: "Whether to remove the usage of the HWUI 'is first frame' flag to ignore jank"
  bug: "354763298"
  is_fixed_read_only: true
}