diff options
| author | 2022-04-26 23:01:49 +0000 | |
|---|---|---|
| committer | 2022-04-26 23:01:49 +0000 | |
| commit | 51de64061bdf95778ad0955374629e789a7d19f9 (patch) | |
| tree | d25a8e84a009c5bcf760e98ccdfaca7e170d88e8 /cmds/bootanimation/BootAnimation.cpp | |
| parent | c4820a262ee80fdfc2dcdff9d988d3361b7a20c0 (diff) | |
| parent | af8e6e4eba148f5708a6e01ef393e25f55d0dd34 (diff) | |
Merge "Try to load colors more frequently" into tm-dev am: af8e6e4eba
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17944265
Change-Id: I0caf150aa1ba5d2be8f8b67380b30d2081bdfb38
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'cmds/bootanimation/BootAnimation.cpp')
| -rw-r--r-- | cmds/bootanimation/BootAnimation.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index fb68c6d84d6a..50c8e933d25f 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -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(); |