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

Commit f7d25db9 authored by Peter Kalauskas's avatar Peter Kalauskas Committed by Android (Google) Code Review
Browse files

Merge "Add androidx.tracing to sysui" into udc-dev

parents 0dd7f1f2 63920d6d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@ android_library {
        "androidx.palette_palette",
        "androidx.legacy_legacy-preference-v14",
        "androidx.leanback_leanback",
        "androidx.tracing_tracing",
        "androidx.slice_slice-core",
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
+12 −8
Original line number Diff line number Diff line
@@ -16,20 +16,22 @@

package com.android.systemui.util

import android.os.Trace
import android.os.Handler
import android.os.TraceNameSupplier
import androidx.tracing.Trace

/**
 * Run a block within a [Trace] section.
 * Calls [Trace.beginSection] before and [Trace.endSection] after the passed block.
 * Run a block within a [Trace] section. Calls [Trace.beginSection] before and [Trace.endSection]
 * after the passed block. If tracing is disabled, it will run the block directly to avoid using an
 * unnecessary try-finally block.
 */
inline fun <T> traceSection(tag: String, block: () -> T): T =
        if (Trace.isTagEnabled(Trace.TRACE_TAG_APP)) {
            Trace.traceBegin(Trace.TRACE_TAG_APP, tag)
        if (Trace.isEnabled()) {
            Trace.beginSection(tag)
            try {
                block()
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_APP)
                Trace.endSection()
            }
        } else {
            block()
@@ -42,8 +44,10 @@ class TraceUtils {
        }

        /**
         * Helper function for creating a Runnable object that implements TraceNameSupplier.
         * This is useful for posting Runnables to Handlers with meaningful names.
         * Helper function for creating a [Runnable] that implements [TraceNameSupplier]. This is
         * useful when posting to a [Handler] so that the [Runnable] has a meaningful name in the
         * trace. Otherwise, the class name of the [Runnable] is used, which is often something like
         * `pkg.MyClass$$ExternalSyntheticLambda0`.
         */
        inline fun namedRunnable(tag: String, crossinline block: () -> Unit): Runnable {
            return object : Runnable, TraceNameSupplier {