Loading core/java/com/android/internal/jank/FrameTracker.java +10 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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; Loading core/java/com/android/internal/jank/flags.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -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 } Loading
core/java/com/android/internal/jank/FrameTracker.java +10 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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; Loading
core/java/com/android/internal/jank/flags.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -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 }