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

Commit 2b0b88aa authored by Robert Carr's avatar Robert Carr Committed by Rob Carr
Browse files

SyncRtSurfaceTransactionApplier: Use BLASTSync

Helps us down the path of deprecating deferred transaction. BLASTSync
should also be easier to debug and produce less overhead on the server.

Bug: 168505645
Test: Existing tests pass
Change-Id: I7447b54d93ee8db0c5b6307372ee91e08c489af4
parent d23e0827
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -85,13 +85,14 @@ public class SyncRtSurfaceTransactionApplier {
        for (int i = params.length - 1; i >= 0; i--) {
            SurfaceParams surfaceParams = params[i];
            SurfaceControl surface = surfaceParams.surface;
            if (frame > 0) {
                t.deferTransactionUntil(surface, mTargetSc, frame);
            }
            applyParams(t, surfaceParams, mTmpFloat9);
        }
        if (mTargetViewRootImpl != null) {
            mTargetViewRootImpl.mergeWithNextTransaction(t, frame);
        } else {
            t.apply();
        }
    }

    public static void applyParams(Transaction t, SurfaceParams params, float[] tmpFloat9) {
        if ((params.flags & FLAG_TRANSACTION) != 0) {
+1 −1
Original line number Diff line number Diff line
@@ -10109,7 +10109,7 @@ public final class ViewRootImpl implements ViewParent,
     * Merges the transaction passed in with the next transaction in BLASTBufferQueue. This ensures
     * you can add transactions to the upcoming frame.
     */
    void mergeWithNextTransaction(Transaction t, long frameNumber) {
    public void mergeWithNextTransaction(Transaction t, long frameNumber) {
        if (mBlastBufferQueue != null) {
            mBlastBufferQueue.mergeWithNextTransaction(t, frameNumber);
        }
+5 −2
Original line number Diff line number Diff line
@@ -114,10 +114,13 @@ public class SyncRtSurfaceTransactionApplierCompat {
                for (int i = params.length - 1; i >= 0; i--) {
                    SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams =
                            params[i];
                    t.deferTransactionUntil(surfaceParams.surface, mBarrierSurfaceControl, frame);
                    surfaceParams.applyTo(t);
                }
                if (mTargetViewRootImpl != null) {
                    mTargetViewRootImpl.mergeWithNextTransaction(t, frame);
                } else {
                    t.apply();
                }
                Trace.traceEnd(Trace.TRACE_TAG_VIEW);
                Message.obtain(mApplyHandler, MSG_UPDATE_SEQUENCE_NUMBER, toApplySeqNo, 0)
                        .sendToTarget();
+8 −0
Original line number Diff line number Diff line
@@ -56,4 +56,12 @@ public class ViewRootImplCompat {
                    });
        }
    }

    public void mergeWithNextTransaction(SurfaceControl.Transaction t, long frame) {
        if (mViewRoot != null) {
            mViewRoot.mergeWithNextTransaction(t, frame);
        } else {
            t.apply();
        }
    }
}