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

Commit 10e844df authored by Nicolas Geoffray's avatar Nicolas Geoffray Committed by Automerger Merge Worker
Browse files

Merge "bootanimation: ensure that if a percent is shown, we'll get to 100." am: 87c254de

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1681127

Change-Id: I97fc1c141f319436ef54beb11f0e0d265cbadc7c
parents 8000286e 87c254de
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -1185,9 +1185,12 @@ bool BootAnimation::movie() {
    return false;
}

bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part, const int fadedFramesCount) {
bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part,
                                          const int fadedFramesCount,
                                          const int lastDisplayedProgress) {
    // stop playing only if it is time to exit and it's a partial part which has been faded out
    return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount;
    return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount &&
        (lastDisplayedProgress == 0 || lastDisplayedProgress == 100);
}

bool BootAnimation::playAnimation(const Animation& animation) {
@@ -1214,7 +1217,7 @@ bool BootAnimation::playAnimation(const Animation& animation) {

        // 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)) break;
            if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break;

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

@@ -1231,7 +1234,7 @@ bool BootAnimation::playAnimation(const Animation& animation) {
                (i == (pcount -1)) && currentProgress != 0;

            for (size_t j=0 ; j<fcount ; j++) {
                if (shouldStopPlayingPart(part, fadedFramesCount)) break;
                if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break;

                processDisplayEvents();

@@ -1330,6 +1333,10 @@ bool BootAnimation::playAnimation(const Animation& animation) {

            if (exitPending() && !part.count && mCurrentInset >= mTargetInset &&
                !part.hasFadingPhase()) {
                if (lastDisplayedProgress != 0 && lastDisplayedProgress != 100) {
                    android::base::SetProperty(PROGRESS_PROP_NAME, "100");
                    continue;
                }
                break; // exit the infinite non-fading part when it has been played at least once
            }
        }
+2 −1
Original line number Diff line number Diff line
@@ -187,7 +187,8 @@ private:
    void resizeSurface(int newWidth, int newHeight);
    void projectSceneToWindow();

    bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount);
    bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount,
                               int lastDisplayedProgress);
    void checkExit();

    void handleViewport(nsecs_t timestep);