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

Commit dbbc3e59 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "InsetAnimationControlImpl: Copy SurfaceControl" into rvc-dev am: 6e2a98a1

Change-Id: I22e9c07afca208f2a086c93f973b164e943cf51c
parents b482fcfe 6e2a98a1
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -56,4 +56,10 @@ public interface InsetsAnimationControlCallbacks {
     *               apply.
     */
    void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params);

    /**
     * Post a message to release the Surface, guaranteed to happen after all
     * previous calls to applySurfaceParams.
     */
    void releaseSurfaceControlFromRt(SurfaceControl sc);
}
+12 −0
Original line number Diff line number Diff line
@@ -180,10 +180,19 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
        mAnimation.setAlpha(mPendingAlpha);
        if (mFinished) {
            mController.notifyFinished(this, mShownOnFinish);
            releaseLeashes();
        }
        return mFinished;
    }

    private void releaseLeashes() {
        for (int i = mControls.size() - 1; i >= 0; i--) {
            final InsetsSourceControl c = mControls.valueAt(i);
            if (c == null) continue;
            c.release(mController::releaseSurfaceControlFromRt);
        }
    }

    @Override
    public void finish(boolean shown) {
        if (mCancelled || mFinished) {
@@ -191,6 +200,7 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
        }
        setInsetsAndAlpha(shown ? mShownInsets : mHiddenInsets, 1f /* alpha */, 1f /* fraction */);
        mFinished = true;

        mShownOnFinish = shown;
    }

@@ -207,6 +217,8 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
        }
        mCancelled = true;
        mListener.onCancelled();

        releaseLeashes();
    }

    public boolean isCancelled() {
+6 −0
Original line number Diff line number Diff line
@@ -75,6 +75,12 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro
            t.apply();
            t.close();
        }

        @Override
        public void releaseSurfaceControlFromRt(SurfaceControl sc) {
            // Since we don't push the SurfaceParams to the RT we can release directly
            sc.release();
        }
    };

    @UiThread
+1 −1
Original line number Diff line number Diff line
@@ -704,7 +704,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
            }
            final InsetsSourceControl control = consumer.getControl();
            if (control != null) {
                controls.put(consumer.getType(), control);
                controls.put(consumer.getType(), new InsetsSourceControl(control));
                typesReady |= toPublicType(consumer.getType());
            } else if (animationType == ANIMATION_TYPE_SHOW) {

+7 −0
Original line number Diff line number Diff line
@@ -409,6 +409,13 @@ class InsetsPolicy {
                t.close();
            }

            // Since we don't push applySurfaceParams to a Handler-queue we don't need
            // to push release in this case.
            @Override
            public void releaseSurfaceControlFromRt(SurfaceControl sc) {
                sc.release();
            }

            @Override
            public void startAnimation(InsetsAnimationControlImpl controller,
                    WindowInsetsAnimationControlListener listener, int types,