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

Commit 106f88c8 authored by Chris Craik's avatar Chris Craik Committed by Android (Google) Code Review
Browse files

Merge "Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""" into mnc-dev

parents 4eb03f8f 31a2d063
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public class GhostView extends View {
        final ViewGroup parent = (ViewGroup) mView.getParent();
        setGhostedVisibility(View.INVISIBLE);
        parent.mRecreateDisplayList = true;
        parent.getDisplayList();
        parent.updateDisplayListIfDirty();
    }

    @Override
@@ -49,7 +49,7 @@ public class GhostView extends View {
        if (canvas instanceof DisplayListCanvas) {
            DisplayListCanvas dlCanvas = (DisplayListCanvas) canvas;
            mView.mRecreateDisplayList = true;
            RenderNode renderNode = mView.getDisplayList();
            RenderNode renderNode = mView.updateDisplayListIfDirty();
            if (renderNode.isValid()) {
                dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode
                dlCanvas.drawRenderNode(renderNode);
@@ -84,7 +84,7 @@ public class GhostView extends View {
            final ViewGroup parent = (ViewGroup) mView.getParent();
            if (parent != null) {
                parent.mRecreateDisplayList = true;
                parent.getDisplayList();
                parent.updateDisplayListIfDirty();
            }
        }
    }
+2 −2
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ public class ThreadedRenderer extends HardwareRenderer {
        view.mRecreateDisplayList = (view.mPrivateFlags & View.PFLAG_INVALIDATED)
                == View.PFLAG_INVALIDATED;
        view.mPrivateFlags &= ~View.PFLAG_INVALIDATED;
        view.getDisplayList();
        view.updateDisplayListIfDirty();
        view.mRecreateDisplayList = false;
    }

@@ -285,7 +285,7 @@ public class ThreadedRenderer extends HardwareRenderer {
                callbacks.onHardwarePreDraw(canvas);

                canvas.insertReorderBarrier();
                canvas.drawRenderNode(view.getDisplayList());
                canvas.drawRenderNode(view.updateDisplayListIfDirty());
                canvas.insertInorderBarrier();

                callbacks.onHardwarePostDraw(canvas);
+10 −17
Original line number Diff line number Diff line
@@ -14711,11 +14711,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        return !(mAttachInfo == null || mAttachInfo.mHardwareRenderer == null);
    }
    private void updateDisplayListIfDirty() {
    /**
     * Gets the RenderNode for the view, and updates its DisplayList (if needed and supported)
     * @hide
     */
    @NonNull
    public RenderNode updateDisplayListIfDirty() {
        final RenderNode renderNode = mRenderNode;
        if (!canHaveDisplayList()) {
            // can't populate RenderNode, don't try
            return;
            return renderNode;
        }
        if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0
@@ -14729,7 +14734,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                mPrivateFlags &= ~PFLAG_DIRTY_MASK;
                dispatchGetDisplayList();
                return; // no work needed
                return renderNode; // no work needed
            }
            // If we got here, we're recreating it. Mark it as such to ensure that
@@ -14778,19 +14783,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID;
            mPrivateFlags &= ~PFLAG_DIRTY_MASK;
        }
    }
    /**
     * Returns a RenderNode with View draw content recorded, which can be
     * used to draw this view again without executing its draw method.
     *
     * @return A RenderNode ready to replay, or null if caching is not enabled.
     *
     * @hide
     */
    public RenderNode getDisplayList() {
        updateDisplayListIfDirty();
        return mRenderNode;
        return renderNode;
    }
    private void resetDisplayList() {
@@ -15552,7 +15545,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        if (drawingWithRenderNode) {
            // Delay getting the display list until animation-driven alpha values are
            // set up and possibly passed on to the view
            renderNode = getDisplayList();
            renderNode = updateDisplayListIfDirty();
            if (!renderNode.isValid()) {
                // Uncommon, but possible. If a view is removed from the hierarchy during the call
                // to getDisplayList(), the display list will be marked invalid and we should not
+2 −3
Original line number Diff line number Diff line
@@ -3524,10 +3524,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
    }

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

+2 −4
Original line number Diff line number Diff line
@@ -2322,11 +2322,9 @@ public final class ViewRootImpl implements ViewParent,
     * @hide
     */
    void outputDisplayList(View view) {
        RenderNode renderNode = view.getDisplayList();
        if (renderNode != null) {
        RenderNode renderNode = view.updateDisplayListIfDirty();
        renderNode.output();
    }
    }

    /**
     * @see #PROPERTY_PROFILE_RENDERING
Loading