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

Commit 77fb584c authored by Melody Hsu's avatar Melody Hsu
Browse files

Guard Choreographer buffer stuffing recovery behind flag

Recent changes to how buffer stuffing is detected changes
the assumptions for when recovery should occur, and those
changes were missed in being guarded by the appropriate flag.

Fixes: b/383893971
Test: presubmit, SysUI Jank Regression Dashboard
Flag: android.view.flags.buffer_stuffing_recovery
Change-Id: I07cec9c22af0078ee447614f4885d21cb4305171
parent c05c4e0e
Loading
Loading
Loading
Loading
+19 −16
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package android.view;
package android.view;


import static android.view.flags.Flags.bufferStuffingRecovery;
import static android.view.flags.Flags.FLAG_EXPECTED_PRESENTATION_TIME_API;
import static android.view.flags.Flags.FLAG_EXPECTED_PRESENTATION_TIME_API;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_APP;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_APP;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_SURFACE_FLINGER;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_SURFACE_FLINGER;
@@ -965,6 +966,7 @@ public final class Choreographer {


        // Evaluate if buffer stuffing recovery needs to start or end, and
        // Evaluate if buffer stuffing recovery needs to start or end, and
        // what actions need to be taken for recovery.
        // what actions need to be taken for recovery.
        if (bufferStuffingRecovery()) {
            switch (updateBufferStuffingState(frameTimeNanos, vsyncEventData)) {
            switch (updateBufferStuffingState(frameTimeNanos, vsyncEventData)) {
                case NONE:
                case NONE:
                    // Without buffer stuffing recovery, offsetFrameTimeNanos is
                    // Without buffer stuffing recovery, offsetFrameTimeNanos is
@@ -982,6 +984,7 @@ public final class Choreographer {
                default:
                default:
                    break;
                    break;
            }
            }
        }


        try {
        try {
            FrameTimeline timeline = mFrameData.update(offsetFrameTimeNanos, vsyncEventData);
            FrameTimeline timeline = mFrameData.update(offsetFrameTimeNanos, vsyncEventData);
+3 −6
Original line number Original line Diff line number Diff line
@@ -22,7 +22,6 @@ import static android.graphics.Matrix.MSKEW_X;
import static android.graphics.Matrix.MSKEW_Y;
import static android.graphics.Matrix.MSKEW_Y;
import static android.graphics.Matrix.MTRANS_X;
import static android.graphics.Matrix.MTRANS_X;
import static android.graphics.Matrix.MTRANS_Y;
import static android.graphics.Matrix.MTRANS_Y;
import static android.view.flags.Flags.bufferStuffingRecovery;
import static android.view.SurfaceControlProto.HASH_CODE;
import static android.view.SurfaceControlProto.HASH_CODE;
import static android.view.SurfaceControlProto.LAYER_ID;
import static android.view.SurfaceControlProto.LAYER_ID;
import static android.view.SurfaceControlProto.NAME;
import static android.view.SurfaceControlProto.NAME;
@@ -5118,11 +5117,9 @@ public final class SurfaceControl implements Parcelable {
         */
         */
        @NonNull
        @NonNull
        public Transaction setRecoverableFromBufferStuffing(@NonNull SurfaceControl sc) {
        public Transaction setRecoverableFromBufferStuffing(@NonNull SurfaceControl sc) {
            if (bufferStuffingRecovery()) {
            checkPreconditions(sc);
            checkPreconditions(sc);
            nativeSetFlags(mNativeObject, sc.mNativeObject, RECOVERABLE_FROM_BUFFER_STUFFING,
            nativeSetFlags(mNativeObject, sc.mNativeObject, RECOVERABLE_FROM_BUFFER_STUFFING,
                    RECOVERABLE_FROM_BUFFER_STUFFING);
                    RECOVERABLE_FROM_BUFFER_STUFFING);
            }
            return this;
            return this;
        }
        }