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

Commit 31a2d063 authored by Chris Craik's avatar Chris Craik
Browse files

Revert "Revert "Merge getDisplayList and updateDisplayListIfDirty""

Fixes breakage from HwAccelerationTest

This reverts commit b2847afd.

Change-Id: I762b3c9020fc1d06bac61ffa8b956049147515b1
parent 5c705c59
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