Merge "bootanimation: ensure that if a percent is shown, we'll get to 100." am: 87c254de0e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1681127 Change-Id: I97fc1c141f319436ef54beb11f0e0d265cbadc7c
This commit is contained in:
@@ -1185,9 +1185,12 @@ bool BootAnimation::movie() {
|
|||||||
return false;
|
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
|
// 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) {
|
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
|
// 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++) {
|
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);
|
mCallbacks->playPart(i, part, r);
|
||||||
|
|
||||||
@@ -1231,7 +1234,7 @@ bool BootAnimation::playAnimation(const Animation& animation) {
|
|||||||
(i == (pcount -1)) && currentProgress != 0;
|
(i == (pcount -1)) && currentProgress != 0;
|
||||||
|
|
||||||
for (size_t j=0 ; j<fcount ; j++) {
|
for (size_t j=0 ; j<fcount ; j++) {
|
||||||
if (shouldStopPlayingPart(part, fadedFramesCount)) break;
|
if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break;
|
||||||
|
|
||||||
processDisplayEvents();
|
processDisplayEvents();
|
||||||
|
|
||||||
@@ -1330,6 +1333,10 @@ bool BootAnimation::playAnimation(const Animation& animation) {
|
|||||||
|
|
||||||
if (exitPending() && !part.count && mCurrentInset >= mTargetInset &&
|
if (exitPending() && !part.count && mCurrentInset >= mTargetInset &&
|
||||||
!part.hasFadingPhase()) {
|
!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
|
break; // exit the infinite non-fading part when it has been played at least once
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,7 +187,8 @@ private:
|
|||||||
void resizeSurface(int newWidth, int newHeight);
|
void resizeSurface(int newWidth, int newHeight);
|
||||||
void projectSceneToWindow();
|
void projectSceneToWindow();
|
||||||
|
|
||||||
bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount);
|
bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount,
|
||||||
|
int lastDisplayedProgress);
|
||||||
void checkExit();
|
void checkExit();
|
||||||
|
|
||||||
void handleViewport(nsecs_t timestep);
|
void handleViewport(nsecs_t timestep);
|
||||||
|
|||||||
Reference in New Issue
Block a user