diff options
| author | 2021-08-19 21:33:15 +0000 | |
|---|---|---|
| committer | 2021-08-19 21:33:15 +0000 | |
| commit | e0b3b959f27fdbb571be6f56c62616b036d13e3f (patch) | |
| tree | 1e8017688fb1d9d385c23503853f2d89cf38836a /cmds/bootanimation/BootAnimation.cpp | |
| parent | 92ec5e825420a18f62008b0aa7e26d27b576a08a (diff) | |
| parent | a1c0f6dd41bbd6322a863d9e50904289c822d4bc (diff) | |
Merge "Move boot color sysprop parsing to after loading zips." into sc-qpr1-dev am: a1c0f6dd41
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15600978
Change-Id: Iaf81ba285283aafcbffaf592b978d675a203006a
Diffstat (limited to 'cmds/bootanimation/BootAnimation.cpp')
| -rw-r--r-- | cmds/bootanimation/BootAnimation.cpp | 47 | 
1 files changed, 25 insertions, 22 deletions
| diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index fa94e6a4ace6..98e447cf996f 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -729,22 +729,6 @@ void BootAnimation::initShaders() {      glVertexAttribPointer(uvLocation, 2, GL_FLOAT, GL_FALSE, 0, quadUVs);      glEnableVertexAttribArray(uvLocation); -    if (dynamicColoringEnabled) { -        glUseProgram(mImageShader); -        SLOGI("[BootAnimation] Dynamically coloring boot animation."); -        for (int i = 0; i < DYNAMIC_COLOR_COUNT; i++) { -            float *startColor = mAnimation->startColors[i]; -            float *endColor = mAnimation->endColors[i]; -            glUniform4f(glGetUniformLocation(mImageShader, -                (U_START_COLOR_PREFIX + std::to_string(i)).c_str()), -                startColor[0], startColor[1], startColor[2], 1 /* alpha */); -            glUniform4f(glGetUniformLocation(mImageShader, -                (U_END_COLOR_PREFIX + std::to_string(i)).c_str()), -                endColor[0], endColor[1], endColor[2], 1 /* alpha */); -        } -        mImageColorProgressLocation = glGetUniformLocation(mImageShader, U_COLOR_PROGRESS); -    } -      // Initialize text shader.      mTextShader = linkShader(vertexShader, textFragmentShader);      positionLocation = glGetAttribLocation(mTextShader, A_POSITION); @@ -1180,12 +1164,6 @@ bool BootAnimation::parseAnimationDesc(Animation& animation)  {          s = ++endl;      } -    for (int i = 0; i < DYNAMIC_COLOR_COUNT; i++) { -        parseColorDecimalString( -            android::base::GetProperty("persist.bootanim.color" + std::to_string(i + 1), ""), -            animation.endColors[i], animation.startColors[i]); -    } -      return true;  } @@ -1362,6 +1340,10 @@ bool BootAnimation::movie() {          mTimeCheckThread->run("BootAnimation::TimeCheckThread", PRIORITY_NORMAL);      } +    if (mAnimation != nullptr && mAnimation->dynamicColoringEnabled) { +        initDynamicColors(); +    } +      playAnimation(*mAnimation);      if (mTimeCheckThread != nullptr) { @@ -1415,6 +1397,27 @@ void BootAnimation::drawTexturedQuad(float xStart, float yStart, float width, fl          sizeof(quadPositions) / sizeof(quadPositions[0]) / 2);  } +void BootAnimation::initDynamicColors() { +    for (int i = 0; i < DYNAMIC_COLOR_COUNT; i++) { +        parseColorDecimalString( +            android::base::GetProperty("persist.bootanim.color" + std::to_string(i + 1), ""), +            mAnimation->endColors[i], mAnimation->startColors[i]); +    } +    glUseProgram(mImageShader); +    SLOGI("[BootAnimation] Dynamically coloring boot animation."); +    for (int i = 0; i < DYNAMIC_COLOR_COUNT; i++) { +        float *startColor = mAnimation->startColors[i]; +        float *endColor = mAnimation->endColors[i]; +        glUniform4f(glGetUniformLocation(mImageShader, +            (U_START_COLOR_PREFIX + std::to_string(i)).c_str()), +            startColor[0], startColor[1], startColor[2], 1 /* alpha */); +        glUniform4f(glGetUniformLocation(mImageShader, +            (U_END_COLOR_PREFIX + std::to_string(i)).c_str()), +            endColor[0], endColor[1], endColor[2], 1 /* alpha */); +    } +    mImageColorProgressLocation = glGetUniformLocation(mImageShader, U_COLOR_PROGRESS); +} +  bool BootAnimation::playAnimation(const Animation& animation) {      const size_t pcount = animation.parts.size();      nsecs_t frameDuration = s2ns(1) / animation.fps; |