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

Commit 6a3bd422 authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Make transition trace clearer" into main

parents c71d2780 6f334c8b
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -97,6 +97,14 @@ class BLASTSyncEngine {
        void onTransactionReady(int mSyncId, SurfaceControl.Transaction transaction);
        default void onTransactionCommitTimeout() {}
        default void onReadyTimeout() {}

        default void onReadyTraceStart(String name, int id) {
            Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, name, id);
        }

        default void onReadyTraceEnd(String name, int id) {
            Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, name, id);
        }
    }

    /**
@@ -149,8 +157,8 @@ class BLASTSyncEngine {
                }
            };
            if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) {
                mTraceName = name + "SyncGroupReady";
                Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, mTraceName, id);
                mTraceName = name + "-SyncReady#" + id;
                listener.onReadyTraceStart(mTraceName, id);
            }
        }

@@ -209,7 +217,7 @@ class BLASTSyncEngine {

        private void finishNow() {
            if (mTraceName != null) {
                Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, mTraceName, mSyncId);
                mListener.onReadyTraceEnd(mTraceName, mSyncId);
            }
            ProtoLog.v(WM_DEBUG_SYNC_ENGINE, "SyncGroup %d: Finished!", mSyncId);
            SurfaceControl.Transaction merged = mWm.mTransactionFactory.get();
@@ -225,9 +233,7 @@ class BLASTSyncEngine {
                wc.waitForSyncTransactionCommit(wcAwaitingCommit);
            }

            final int syncId = mSyncId;
            final long mergedTxId = merged.getId();
            final String syncName = mSyncName;
            class CommitCallback implements Runnable {
                // Can run a second time if the action completes after the timeout.
                boolean ran = false;
@@ -254,7 +260,7 @@ class BLASTSyncEngine {
                    // a trace. Since these kind of ANRs can trigger such an issue,
                    // try and ensure we will have some visibility in both cases.
                    Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "onTransactionCommitTimeout");
                    Slog.e(TAG, "WM sent Transaction (#" + syncId + ", " + syncName + ", tx="
                    Slog.e(TAG, "WM sent Transaction (#" + mSyncId + ", " + mSyncName + ", tx="
                            + mergedTxId + ") to organizer, but never received commit callback."
                            + " Application ANR likely to follow.");
                    Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+10 −3
Original line number Diff line number Diff line
@@ -137,9 +137,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
    private static final String TAG = "Transition";
    private static final String TRACE_NAME_PLAY_TRANSITION = "playing";

    /** The default package for resources */
    private static final String DEFAULT_PACKAGE = "android";

    /** The transition has been created but isn't collecting yet. */
    private static final int STATE_PENDING = -1;

@@ -3405,6 +3402,16 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
        Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_WINDOW_MANAGER, TAG, cookie);
    }

    @Override
    public void onReadyTraceStart(String name, int id) {
        asyncTraceBegin(name, id);
    }

    @Override
    public void onReadyTraceEnd(String name, int id) {
        asyncTraceEnd(id);
    }

    boolean hasChanged(WindowContainer wc) {
        final ChangeInfo chg = mChanges.get(wc);
        if (chg == null) return false;