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

Commit 13d879bc authored by qiubowen's avatar qiubowen
Browse files

Fix the problem that mDamageGenerationId is a random value



1. mDamageGenerationId is a random value when initialized. When this random value happens to be equal to info.damageGenerationId, the dirty range will reach the maximum DIRTY_MAX.
2. When info.damageGenerationId is equal to 0, which is when the first frame of the APP is drawn, there is no need to reach the maximum DIRTY_MAX in the dirty range.

Bug: 321612817
Test: build

Change-Id: Iab6a04170926d10cdf2a62ae0fbf9cbe5eeb8bbf
Signed-off-by: default avatarqiubowen <qiubowen@xiaomi.com>
parent 583bc717
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) {
 * stencil buffer may be needed. Views that use a functor to draw will be forced onto a layer.
 */
void RenderNode::prepareTreeImpl(TreeObserver& observer, TreeInfo& info, bool functorsNeedLayer) {
    if (mDamageGenerationId == info.damageGenerationId) {
    if (mDamageGenerationId == info.damageGenerationId && mDamageGenerationId != 0) {
        // We hit the same node a second time in the same tree. We don't know the minimal
        // damage rect anymore, so just push the biggest we can onto our parent's transform
        // We push directly onto parent in case we are clipped to bounds but have moved position.
+1 −1
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ private:
    DisplayList mDisplayList;
    DisplayList mStagingDisplayList;

    int64_t mDamageGenerationId;
    int64_t mDamageGenerationId = 0;

    friend class AnimatorManager;
    AnimatorManager mAnimatorManager;