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

Commit 8300146b authored by Chris Li's avatar Chris Li Committed by Automerger Merge Worker
Browse files

Merge "Use getSyncTransaction in SurfaceAnimator and SurfaceFreezer" into tm-dev am: 89913957

parents 4864cabf 89913957
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -50,10 +50,15 @@ class Dimmer {
        }

        @Override
        public SurfaceControl.Transaction getPendingTransaction() {
        public SurfaceControl.Transaction getSyncTransaction() {
            return mHost.getSyncTransaction();
        }

        @Override
        public SurfaceControl.Transaction getPendingTransaction() {
            return mHost.getPendingTransaction();
        }

        @Override
        public void commitPendingTransaction() {
            mHost.commitPendingTransaction();
@@ -105,7 +110,7 @@ class Dimmer {

        void removeSurface() {
            if (mDimLayer != null && mDimLayer.isValid()) {
                getPendingTransaction().remove(mDimLayer);
                getSyncTransaction().remove(mDimLayer);
            }
            mDimLayer = null;
        }
+1 −0
Original line number Diff line number Diff line
@@ -565,6 +565,7 @@ class ScreenRotationAnimation {

        private SimpleSurfaceAnimatable.Builder initializeBuilder() {
            return new SimpleSurfaceAnimatable.Builder()
                    .setSyncTransactionSupplier(mDisplayContent::getSyncTransaction)
                    .setPendingTransactionSupplier(mDisplayContent::getPendingTransaction)
                    .setCommitTransactionRunnable(mDisplayContent::commitPendingTransaction)
                    .setAnimationLeashSupplier(mDisplayContent::makeOverlay);
+22 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
    private final SurfaceControl mParentSurfaceControl;
    private final Runnable mCommitTransactionRunnable;
    private final Supplier<SurfaceControl.Builder> mAnimationLeashFactory;
    private final Supplier<SurfaceControl.Transaction> mSyncTransaction;
    private final Supplier<SurfaceControl.Transaction> mPendingTransaction;
    private final BiConsumer<SurfaceControl.Transaction, SurfaceControl> mOnAnimationLeashCreated;
    private final Consumer<SurfaceControl.Transaction> mOnAnimationLeashLost;
@@ -60,10 +61,16 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
        mAnimationLeashFactory = builder.mAnimationLeashFactory;
        mOnAnimationLeashCreated = builder.mOnAnimationLeashCreated;
        mOnAnimationLeashLost = builder.mOnAnimationLeashLost;
        mSyncTransaction = builder.mSyncTransactionSupplier;
        mPendingTransaction = builder.mPendingTransactionSupplier;
        mOnAnimationFinished = builder.mOnAnimationFinished;
    }

    @Override
    public SurfaceControl.Transaction getSyncTransaction() {
        return mSyncTransaction.get();
    }

    @NonNull
    @Override
    public SurfaceControl.Transaction getPendingTransaction() {
@@ -159,6 +166,9 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
        @Nullable
        private Consumer<Runnable> mOnAnimationFinished = null;

        @NonNull
        private Supplier<SurfaceControl.Transaction> mSyncTransactionSupplier;

        @NonNull
        private Supplier<SurfaceControl.Transaction> mPendingTransactionSupplier;

@@ -206,6 +216,15 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
            return this;
        }

        /**
         * @see SurfaceAnimator.Animatable#getSyncTransaction()
         */
        public Builder setSyncTransactionSupplier(
                @NonNull Supplier<SurfaceControl.Transaction> syncTransactionSupplier) {
            mSyncTransactionSupplier = syncTransactionSupplier;
            return this;
        }

        /**
         * @see SurfaceAnimator.Animatable#getPendingTransaction()
         */
@@ -290,6 +309,9 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
        }

        public SurfaceAnimator.Animatable build() {
            if (mSyncTransactionSupplier == null) {
                throw new IllegalArgumentException("mSyncTransactionSupplier cannot be null");
            }
            if (mPendingTransactionSupplier == null) {
                throw new IllegalArgumentException("mPendingTransactionSupplier cannot be null");
            }
+10 −4
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ class SurfaceAnimator {
                    }
                    final OnAnimationFinishedCallback animationFinishCallback =
                            mSurfaceAnimationFinishedCallback;
                    reset(mAnimatable.getPendingTransaction(), true /* destroyLeash */);
                    reset(mAnimatable.getSyncTransaction(), true /* destroyLeash */);
                    if (staticAnimationFinishedCallback != null) {
                        staticAnimationFinishedCallback.onAnimationFinished(type, anim);
                    }
@@ -234,7 +234,7 @@ class SurfaceAnimator {
        final boolean delayed = mAnimationStartDelayed;
        mAnimationStartDelayed = false;
        if (delayed && mAnimation != null) {
            mAnimation.startAnimation(mLeash, mAnimatable.getPendingTransaction(),
            mAnimation.startAnimation(mLeash, mAnimatable.getSyncTransaction(),
                    mAnimationType, mInnerAnimationFinishedCallback);
            mAnimatable.commitPendingTransaction();
        }
@@ -264,7 +264,7 @@ class SurfaceAnimator {
     * Cancels any currently running animation.
     */
    void cancelAnimation() {
        cancelAnimation(mAnimatable.getPendingTransaction(), false /* restarting */,
        cancelAnimation(mAnimatable.getSyncTransaction(), false /* restarting */,
                true /* forwardCancel */);
        mAnimatable.commitPendingTransaction();
    }
@@ -319,7 +319,7 @@ class SurfaceAnimator {
            return;
        }
        endDelayingAnimationStart();
        final Transaction t = mAnimatable.getPendingTransaction();
        final Transaction t = mAnimatable.getSyncTransaction();
        cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
        mLeash = from.mLeash;
        mAnimation = from.mAnimation;
@@ -619,6 +619,12 @@ class SurfaceAnimator {
     */
    interface Animatable {

        /**
         * Use this method instead of {@link #getPendingTransaction()} if the transaction should be
         * synchronized with the client.
         */
        @NonNull Transaction getSyncTransaction();

        /**
         * @return The pending transaction that will be committed in the next frame.
         */
+3 −2
Original line number Diff line number Diff line
@@ -1004,7 +1004,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    void onDisplayChanged(DisplayContent dc) {
        if (mDisplayContent != null && mDisplayContent.mChangingContainers.remove(this)) {
            // Cancel any change transition queued-up for this container on the old display.
            mSurfaceFreezer.unfreeze(getPendingTransaction());
            mSurfaceFreezer.unfreeze(getSyncTransaction());
        }
        mDisplayContent = dc;
        if (dc != null && dc != this) {
@@ -2697,6 +2697,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
     * @return {@link #mBLASTSyncTransaction} if available. Otherwise, returns
     * {@link #getPendingTransaction()}
     */
    @Override
    public Transaction getSyncTransaction() {
        if (mSyncTransactionCommitCallbackDepth > 0) {
            return mSyncTransaction;
@@ -2767,7 +2768,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    void cancelAnimation() {
        doAnimationFinished(mSurfaceAnimator.getAnimationType(), mSurfaceAnimator.getAnimation());
        mSurfaceAnimator.cancelAnimation();
        mSurfaceFreezer.unfreeze(getPendingTransaction());
        mSurfaceFreezer.unfreeze(getSyncTransaction());
    }

    /** Whether we can start change transition with this window and current display status. */
Loading