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

Commit 410f8b3b authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Add Perfetto tags for transition tracing function

Bug: 322302976
Test: n/a
Change-Id: Ia24085ae097f8be800d8a33a280e26a64bd95b57
parent 7367081b
Loading
Loading
Loading
Loading
+47 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.wm.shell.transition.tracing;

import android.internal.perfetto.protos.PerfettoTrace;
import android.os.SystemClock;
import android.os.Trace;
import android.tracing.perfetto.DataSourceInstance;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.InitArguments;
@@ -58,6 +59,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logDispatched");
        try {
            doLogDispatched(transitionId, handler);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogDispatched(int transitionId, Transitions.TransitionHandler handler) {
        mDataSource.trace(ctx -> {
            final int handlerId = getHandlerId(handler, ctx);

@@ -97,6 +107,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logMergeRequested");
        try {
            doLogMergeRequested(mergeRequestedTransitionId, playingTransitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogMergeRequested(int mergeRequestedTransitionId, int playingTransitionId) {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
@@ -120,10 +139,19 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logMerged");
        try {
            doLogMerged(mergedTransitionId, playingTransitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogMerged(int mergeRequestedTransitionId, int playingTransitionId) {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
            os.write(PerfettoTrace.ShellTransition.ID, mergedTransitionId);
            os.write(PerfettoTrace.ShellTransition.ID, mergeRequestedTransitionId);
            os.write(PerfettoTrace.ShellTransition.MERGE_TIME_NS,
                    SystemClock.elapsedRealtimeNanos());
            os.write(PerfettoTrace.ShellTransition.MERGE_TARGET, playingTransitionId);
@@ -142,6 +170,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logAborted");
        try {
            doLogAborted(transitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogAborted(int transitionId) {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
@@ -157,6 +194,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
    }

    private void onFlush() {
        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "onFlush");
        try {
            doOnFlush();
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doOnFlush() {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();

+38 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.wm;
import android.annotation.NonNull;
import android.internal.perfetto.protos.PerfettoTrace;
import android.os.SystemClock;
import android.os.Trace;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.InitArguments;
import android.tracing.perfetto.Producer;
@@ -57,6 +58,16 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logSentTransition");
        try {
            doLogSentTransition(transition, targets);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogSentTransition(
            Transition transition, ArrayList<Transition.ChangeInfo> targets) {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();

@@ -91,6 +102,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logFinishedTransition");
        try {
            doLogFinishTransition(transition);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogFinishTransition(Transition transition) {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();

@@ -114,6 +134,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logAbortedTransition");
        try {
            doLogAbortedTransition(transition);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogAbortedTransition(Transition transition) {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();

@@ -131,6 +160,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logRemovingStartingWindow");
        try {
            doLogRemovingStartingWindow(startingData);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    public void doLogRemovingStartingWindow(@NonNull StartingData startingData) {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();