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

Commit c470466d authored by Doris Liu's avatar Doris Liu
Browse files

Fix NPE for checking for whether animators should play together

BUG: 29586505
Change-Id: Ic2a67d51d2ac8d5bfb11ed7773c7c7e413cc28c7
parent 33657640
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1064,15 +1064,15 @@ public final class AnimatorSet extends Animator {
    /**
     * @hide
     * TODO: For animatorSet defined in XML, we can use a flag to indicate what the play order
     * if defined (i.e. sequential or together), then we can use the flag instead of calculate
     * dynamically.
     * if defined (i.e. sequential or together), then we can use the flag instead of calculating
     * dynamically. Note that when AnimatorSet is empty this method returns true.
     * @return whether all the animators in the set are supposed to play together
     */
    public boolean shouldPlayTogether() {
        updateAnimatorsDuration();
        createDependencyGraph();
        // All the child nodes are set out to play right after the delay animation
        return mRootNode.mChildNodes.size() == mNodes.size() - 1;
        return mRootNode.mChildNodes == null || mRootNode.mChildNodes.size() == mNodes.size() - 1;
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ void PropertyValuesAnimatorSet::addPropertyAnimator(PropertyValuesHolder* proper
    PropertyAnimator* animator = new PropertyAnimator(propertyValuesHolder,
            interpolator, startDelay, duration, repeatCount);
    mAnimators.emplace_back(animator);
    setListener(new PropertyAnimatorSetListener(this));

    // Check whether any child animator is infinite after adding it them to the set.
    if (repeatCount == -1) {
@@ -42,6 +41,7 @@ PropertyValuesAnimatorSet::PropertyValuesAnimatorSet()
    setStartValue(0);
    mLastFraction = 0.0f;
    setInterpolator(new LinearInterpolator());
    setListener(new PropertyAnimatorSetListener(this));
}

void PropertyValuesAnimatorSet::onFinished(BaseRenderNodeAnimator* animator) {
@@ -115,7 +115,7 @@ void PropertyValuesAnimatorSet::init() {
    std::sort(mAnimators.begin(), mAnimators.end(), [](auto& a, auto&b) {
        return a->getTotalDuration() < b->getTotalDuration();
    });
    mDuration = mAnimators[mAnimators.size() - 1]->getTotalDuration();
    mDuration = mAnimators.empty() ? 0 : mAnimators[mAnimators.size() - 1]->getTotalDuration();
    mInitialized = true;
}