From 93e7e4b1c013228b52a528f4e6a9470537f9e30b Mon Sep 17 00:00:00 2001 From: Nicolo' Mazzucato Date: Fri, 20 Jan 2023 11:21:35 +0000 Subject: [PATCH] Add relayout debug support in Launcher This adds support for measure/layout tracing in Launcher (in sysui it has already been enabled in T) When enabled, traces for each class measure and layout are output in a perfetto trace. This adds some overhead, so it's disabled by default, but extremely useful for testing and debugging long doFrames. To enable request layout tracing for a specific class X, the following helper can be used: trace_class_layouts() { adb shell setprop persist.debug.trace_request_layout 1 adb shell setprop persist.debug.trace_request_layout_class $1 adb shell am force-stop com.google.android.apps.nexuslauncher adb shell am force-stop com.android.systemui } Then, use `trace_class_layouts X` and record a perfetto trace e.g. `trace_class_layout BubbleTextView` To just see class breakdown of measure/layout setting `persist.debug.trace_request_layout` is sufficient. Test: record a trace after enabling options Bug: 266090955 Change-Id: I4f621ebaaec6a07cd7c0693aa8876158cc60e208 --- .../android/launcher3/uioverrides/QuickstepLauncher.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 08ce7943ba..dc160cc382 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -203,6 +203,10 @@ public class QuickstepLauncher extends Launcher { public static final boolean ENABLE_PIP_KEEP_CLEAR_ALGORITHM = SystemProperties.getBoolean("persist.wm.debug.enable_pip_keep_clear_algorithm", true); + private static final boolean TRACE_LAYOUTS = + SystemProperties.getBoolean("persist.debug.trace_layouts", false); + private static final String TRACE_RELAYOUT_CLASS = + SystemProperties.get("persist.debug.trace_request_layout_class", null); public static final boolean GO_LOW_RAM_RECENTS_ENABLED = false; @@ -615,6 +619,8 @@ public class QuickstepLauncher extends Launcher { mViewCapture = SettingsAwareViewCapture.getInstance(this).startCapture(getWindow()); } getWindow().addPrivateFlags(PRIVATE_FLAG_OPTIMIZE_MEASURE); + View.setTraceLayoutSteps(TRACE_LAYOUTS); + View.setTracedRequestLayoutClassClass(TRACE_RELAYOUT_CLASS); } @Override