From 46917e533615c8cf66754b96885155e847ed2ef2 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Mon, 21 Nov 2022 16:53:34 -0800 Subject: [PATCH] TraceUtils updates, new helper for runnables Modify TraceUtils' traceSection to use traceBegin instead of beginSection because beginSection will crash at run-time if the string is longer than 127 chars. Also, guard against StringBuilder GC garbage while tracing. Test: manual Bug: 257075630 Change-Id: I74cb5687a206f5d7ab8eb570cf24715d7e671df1 --- .../com/android/systemui/util/TraceUtils.kt | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/util/TraceUtils.kt b/packages/SystemUI/src/com/android/systemui/util/TraceUtils.kt index 5b16ae999aa30..b311318fb111f 100644 --- a/packages/SystemUI/src/com/android/systemui/util/TraceUtils.kt +++ b/packages/SystemUI/src/com/android/systemui/util/TraceUtils.kt @@ -22,11 +22,22 @@ import android.os.Trace * Run a block within a [Trace] section. * Calls [Trace.beginSection] before and [Trace.endSection] after the passed block. */ -inline fun traceSection(tag: String, block: () -> T): T { - Trace.beginSection(tag) - try { - return block() - } finally { - Trace.endSection() +inline fun traceSection(tag: String, block: () -> T): T = + if (Trace.isTagEnabled(Trace.TRACE_TAG_APP)) { + Trace.traceBegin(Trace.TRACE_TAG_APP, tag) + try { + block() + } finally { + Trace.traceEnd(Trace.TRACE_TAG_APP) + } + } else { + block() + } + +class TraceUtils { + companion object { + inline fun traceRunnable(tag: String, crossinline block: () -> Unit): Runnable { + return Runnable { traceSection(tag) { block() } } + } } -} \ No newline at end of file +}