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

Commit b673790e authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Give disappearing children a chance to recreate DisplayLists" into lmp-dev

parents a4215ceb 6c0665fd
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -3265,21 +3265,29 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
            final View child = children[i];
            if (((child.mViewFlags & VISIBILITY_MASK) == VISIBLE || child.getAnimation() != null) &&
                    child.hasStaticLayer()) {
                child.mRecreateDisplayList = (child.mPrivateFlags & PFLAG_INVALIDATED)
                        == PFLAG_INVALIDATED;
                child.mPrivateFlags &= ~PFLAG_INVALIDATED;
                child.getDisplayList();
                child.mRecreateDisplayList = false;
                recreateChildDisplayList(child);
            }
        }
        if (mOverlay != null) {
            View overlayView = mOverlay.getOverlayView();
            overlayView.mRecreateDisplayList = (overlayView.mPrivateFlags & PFLAG_INVALIDATED)
                    == PFLAG_INVALIDATED;
            overlayView.mPrivateFlags &= ~PFLAG_INVALIDATED;
            overlayView.getDisplayList();
            overlayView.mRecreateDisplayList = false;
            recreateChildDisplayList(overlayView);
        }
        if (mDisappearingChildren != null) {
            final ArrayList<View> disappearingChildren = mDisappearingChildren;
            final int disappearingCount = disappearingChildren.size();
            for (int i = 0; i < disappearingCount; ++i) {
                final View child = disappearingChildren.get(i);
                recreateChildDisplayList(child);
            }
        }
    }

    private void recreateChildDisplayList(View child) {
        child.mRecreateDisplayList = (child.mPrivateFlags & PFLAG_INVALIDATED)
                == PFLAG_INVALIDATED;
        child.mPrivateFlags &= ~PFLAG_INVALIDATED;
        child.getDisplayList();
        child.mRecreateDisplayList = false;
    }

    /**