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

Commit b0586968 authored by Johannes Gallmann's avatar Johannes Gallmann
Browse files

Fix java crash for cross task and cross activity back

Bug: 319293406
Flag: Flag: ACONFIG com.android.systemui.predictive_back_system_animations STAGING
Test: presubmit
Change-Id: Id64df1ab306988542b33df5078f95eceaeb9504a
parent e0a5e9b0
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -199,6 +199,10 @@ public class CrossActivityBackAnimation extends ShellBackAnimation {
    }

    private void applyTransform(SurfaceControl leash, RectF targetRect, float targetAlpha) {
        if (leash == null || !leash.isValid()) {
            return;
        }

        final float scale = targetRect.width() / mStartTaskRect.width();
        mTransformMatrix.reset();
        mTransformMatrix.setScale(scale, scale);
@@ -211,12 +215,16 @@ public class CrossActivityBackAnimation extends ShellBackAnimation {

    private void finishAnimation() {
        if (mEnteringTarget != null) {
            if (mEnteringTarget.leash != null && mEnteringTarget.leash.isValid()) {
                mTransaction.setCornerRadius(mEnteringTarget.leash, 0);
                mEnteringTarget.leash.release();
            }
            mEnteringTarget = null;
        }
        if (mClosingTarget != null) {
            if (mClosingTarget.leash != null) {
                mClosingTarget.leash.release();
            }
            mClosingTarget = null;
        }
        if (mBackground != null) {
@@ -260,7 +268,9 @@ public class CrossActivityBackAnimation extends ShellBackAnimation {
    }

    private void onGestureCommitted() {
        if (mEnteringTarget == null || mClosingTarget == null) {
        if (mEnteringTarget == null || mClosingTarget == null || mClosingTarget.leash == null
                || mEnteringTarget.leash == null || !mEnteringTarget.leash.isValid()
                || !mClosingTarget.leash.isValid()) {
            finishAnimation();
            return;
        }
+4 −2
Original line number Diff line number Diff line
@@ -205,7 +205,9 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
        float top = mapRange(progress, mClosingStartRect.top, targetTop);
        float width = mapRange(progress, mClosingStartRect.width(), targetWidth);
        float height = mapRange(progress, mClosingStartRect.height(), targetHeight);
        if (mClosingTarget.leash != null && mClosingTarget.leash.isValid()) {
            mTransaction.setLayer(mClosingTarget.leash, 0);
        }

        mClosingCurrentRect.set(left, top, left + width, top + height);
        applyTransform(mClosingTarget.leash, mClosingCurrentRect, mCornerRadius);
@@ -223,7 +225,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {

    /** Transform the target window to match the target rect. */
    private void applyTransform(SurfaceControl leash, RectF targetRect, float cornerRadius) {
        if (leash == null) {
        if (leash == null || !leash.isValid()) {
            return;
        }