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

Commit 7de57417 authored by Tony Wickham's avatar Tony Wickham
Browse files

Fix a couple issues with swiping up from home

- Don't update the animation to go from 0 to 1; instead, update the
  interpolator to clamp to the remaining progress (b/79773309)
- Fix NPE that can happen in a race between the atomic animation
  ending and the non-atomic animation canceling/ending

Change-Id: I313251dc5cbd7b931b043fc3e840bb4ab368a790
parent 48059dc7
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -189,14 +189,8 @@ public class PortraitStatesTouchController extends AbstractStateChangeTouchContr
            if (isFling && expectedDuration != 0) {
                // Update all apps interpolator to add a bit of overshoot starting from currFraction
                final float currFraction = mCurrentAnimation.getProgressFraction();
                mAllAppsInterpolatorWrapper.baseInterpolator
                        = new OvershootInterpolator(Math.min(Math.abs(velocity) / 3, 3f)) {
                    @Override
                    public float getInterpolation(float t) {
                        return super.getInterpolation(t) + ((1 - t) * currFraction);
                    }
                };
                animator.setFloatValues(0, 1);
                mAllAppsInterpolatorWrapper.baseInterpolator = Interpolators.clampToProgress(
                        new OvershootInterpolator(Math.min(Math.abs(velocity), 3f)), currFraction, 1);
                animator.setDuration(Math.min(expectedDuration, ATOMIC_DURATION))
                        .setInterpolator(LINEAR);
            }
+7 −5
Original line number Diff line number Diff line
@@ -209,12 +209,14 @@ public abstract class AbstractStateChangeTouchController
                @Override
                public void onAnimationSuccess(Animator animation) {
                    cancelAtomicComponentsController();
                    if (mCurrentAnimation != null) {
                        mAtomicComponentsStartProgress = mCurrentAnimation.getProgressFraction();
                        long duration = (long) (getShiftRange() * 2);
                        mAtomicComponentsController = AnimatorPlaybackController.wrap(
                                createAtomicAnimForState(mFromState, mToState, duration), duration);
                        mAtomicComponentsController.dispatchOnStart();
                    }
                }
            });
        }
        if (goingBetweenNormalAndOverview(mFromState, mToState)) {