Loading core/java/android/view/GhostView.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading Loading @@ -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(); } } } Loading core/java/android/view/ThreadedRenderer.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); Loading core/java/android/view/View.java +10 −17 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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 core/java/android/view/ViewGroup.java +2 −3 Original line number Diff line number Diff line Loading @@ -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; } Loading core/java/android/view/ViewRootImpl.java +2 −4 Original line number Diff line number Diff line Loading @@ -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 Loading
core/java/android/view/GhostView.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading Loading @@ -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(); } } } Loading
core/java/android/view/ThreadedRenderer.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); Loading
core/java/android/view/View.java +10 −17 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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
core/java/android/view/ViewGroup.java +2 −3 Original line number Diff line number Diff line Loading @@ -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; } Loading
core/java/android/view/ViewRootImpl.java +2 −4 Original line number Diff line number Diff line Loading @@ -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