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

Commit af8e6e4e authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Try to load colors more frequently" into tm-dev

parents 2b7ad933 bfd1812f
Loading
Loading
Loading
Loading
+21 −8
Original line number Diff line number Diff line
@@ -1459,6 +1459,8 @@ bool BootAnimation::playAnimation(const Animation& animation) {

    int fadedFramesCount = 0;
    int lastDisplayedProgress = 0;
    int colorTransitionStart = animation.colorTransitionStart;
    int colorTransitionEnd = animation.colorTransitionEnd;
    for (size_t i=0 ; i<pcount ; i++) {
        const Animation::Part& part(animation.parts[i]);
        const size_t fcount = part.frames.size();
@@ -1471,15 +1473,27 @@ bool BootAnimation::playAnimation(const Animation& animation) {
            continue; //to next part
        }

        if (animation.dynamicColoringEnabled && part.useDynamicColoring && !mDynamicColorsApplied) {
            SLOGD("Trying to load dynamic color sysprops.");
            initDynamicColors();
        }

        // process the part not only while the count allows but also if already fading
        for (int r=0 ; !part.count || r<part.count || fadedFramesCount > 0 ; r++) {
            if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break;

            // It's possible that the sysprops were not loaded yet at this boot phase.
            // If that's the case, then we should keep trying until they are available.
            if (animation.dynamicColoringEnabled && !mDynamicColorsApplied
                && (part.useDynamicColoring || part.postDynamicColoring)) {
                SLOGD("Trying to load dynamic color sysprops.");
                initDynamicColors();
                if (mDynamicColorsApplied) {
                    // Sysprops were loaded. Next step is to adjust the animation if we loaded
                    // the colors after the animation should have started.
                    const int transitionLength = colorTransitionEnd - colorTransitionStart;
                    if (part.postDynamicColoring) {
                        colorTransitionStart = 0;
                        colorTransitionEnd = fmin(transitionLength, fcount - 1);
                    }
                }
            }

            mCallbacks->playPart(i, part, r);

            glClearColor(
@@ -1509,9 +1523,8 @@ bool BootAnimation::playAnimation(const Animation& animation) {
                // - 1 for parts that come after.
                float colorProgress = part.useDynamicColoring
                    ? fmin(fmax(
                        ((float)j - animation.colorTransitionStart) /
                            fmax(animation.colorTransitionEnd -
                                animation.colorTransitionStart, 1.0f), 0.0f), 1.0f)
                        ((float)j - colorTransitionStart) /
                            fmax(colorTransitionEnd - colorTransitionStart, 1.0f), 0.0f), 1.0f)
                    : (part.postDynamicColoring ? 1 : 0);

                processDisplayEvents();