From fbde6f5351d14b3f2170678f62842a280cfbfb33 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Wed, 10 May 2023 16:04:48 -0700 Subject: [PATCH] Enable ShadeViewDiffer systrace logs - Enable ShadeViewDiffer "UI Events" systrace logs on debug builds - Guard against unnecessary string creation in LogBuffer.echoToSystrace() when tracing is disabled - Add two new trace sections for debugging ShadeViewDiffer.applySpec() Test: Capture trace, look for UI Events during applySpec Bug: 224973321 Change-Id: I438947f43a9fc1bc6ff66e923645fd695cc99543 --- .../log/src/com/android/systemui/log/LogBuffer.kt | 12 +++++++----- .../com/android/systemui/log/dagger/LogModule.java | 2 +- .../collection/render/ShadeViewDiffer.kt | 10 ++++++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/log/src/com/android/systemui/log/LogBuffer.kt b/packages/SystemUI/log/src/com/android/systemui/log/LogBuffer.kt index af1a11f6597ac..2007e7606ab86 100644 --- a/packages/SystemUI/log/src/com/android/systemui/log/LogBuffer.kt +++ b/packages/SystemUI/log/src/com/android/systemui/log/LogBuffer.kt @@ -271,11 +271,13 @@ constructor( } private fun echoToSystrace(message: LogMessage, strMessage: String) { - Trace.instantForTrack( - Trace.TRACE_TAG_APP, - "UI Events", - "$name - ${message.level.shortString} ${message.tag}: $strMessage" - ) + if (Trace.isTagEnabled(Trace.TRACE_TAG_APP)) { + Trace.instantForTrack( + Trace.TRACE_TAG_APP, + "UI Events", + "$name - ${message.level.shortString} ${message.tag}: $strMessage" + ) + } } private fun echoToLogcat(message: LogMessage, strMessage: String) { diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java index 9be18ace79fac..44ce36ebb3e2c 100644 --- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java @@ -60,7 +60,7 @@ public class LogModule { if (Compile.IS_DEBUG && notifPipelineFlags.isDevLoggingEnabled()) { maxSize *= 10; } - return factory.create("NotifLog", maxSize, false /* systrace */); + return factory.create("NotifLog", maxSize, Compile.IS_DEBUG /* systrace */); } /** Provides a logging buffer for all logs related to notifications on the lockscreen. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDiffer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDiffer.kt index 18ee4816fac91..59fc387c4608f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDiffer.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDiffer.kt @@ -67,7 +67,10 @@ class ShadeViewDiffer( fun getViewLabel(view: View): String = nodes.values.firstOrNull { node -> node.view === view }?.label ?: view.toString() - private fun detachChildren(parentNode: ShadeNode, specMap: Map) { + private fun detachChildren( + parentNode: ShadeNode, + specMap: Map + ) = traceSection("detachChildren") { val views = nodes.values.associateBy { it.view } fun detachRecursively(parentNode: ShadeNode, specMap: Map) { val parentSpec = specMap[parentNode.controller] @@ -124,7 +127,10 @@ class ShadeViewDiffer( } } - private fun attachChildren(parentNode: ShadeNode, specMap: Map) { + private fun attachChildren( + parentNode: ShadeNode, + specMap: Map + ): Unit = traceSection("attachChildren") { val parentSpec = checkNotNull(specMap[parentNode.controller]) for ((index, childSpec) in parentSpec.children.withIndex()) {