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

Commit 541c4b60 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Add real to elapsed offset to shell transition trace

So the entries can be mapped to the respective unix timestamps for Winscope.

Test: Capture trace from winscope and make sure timeline is properly synchronized
Bug: 277181336
Change-Id: I2478b3ce98d2ffe639276715b3c3984a4e450152
parent 31fc0390
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ message WmShellTransitionTraceProto {
    required fixed64 magic_number = 1;
    repeated Transition transitions = 2;
    repeated HandlerMapping handlerMappings = 3;
    /* offset between real-time clock and elapsed time clock in nanoseconds.
    Calculated as: 1000000 * System.currentTimeMillis() - SystemClock.elapsedRealtimeNanos() */
    optional fixed64 real_to_elapsed_time_offset_nanos = 4;
}

message Transition {
+5 −1
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.os.Trace;
import android.util.Log;

import com.android.internal.util.TraceBuffer;
import com.android.wm.shell.nano.HandlerMapping;
import com.android.wm.shell.sysui.ShellCommandHandler;

import com.google.protobuf.nano.MessageNano;
@@ -41,6 +40,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.TimeUnit;

/**
 * Helper class to collect and dump transition traces.
@@ -241,6 +241,10 @@ public class Tracer implements ShellCommandHandler.ShellCommandActionHandler {
                    new com.android.wm.shell.nano.WmShellTransitionTraceProto();
            proto.magicNumber = MAGIC_NUMBER_VALUE;
            writeHandlerMappingToProto(proto);
            long timeOffsetNs =
                    TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())
                            - SystemClock.elapsedRealtimeNanos();
            proto.realToElapsedTimeOffsetNanos = timeOffsetNs;
            int pid = android.os.Process.myPid();
            LogAndPrintln.i(pw, "Writing file to " + file.getAbsolutePath()
                    + " from process " + pid);