OSDN Git Service

Merge getDisplayList and updateDisplayListIfDirty
authorChris Craik <ccraik@google.com>
Thu, 30 Apr 2015 23:18:21 +0000 (16:18 -0700)
committerChris Craik <ccraik@google.com>
Thu, 30 Apr 2015 23:18:22 +0000 (16:18 -0700)
bug:17767704

Change-Id: I5dffc0fa343d5d67d5fe59c78eca77bb8645ce0e

core/java/android/view/GhostView.java
core/java/android/view/ThreadedRenderer.java
core/java/android/view/View.java
core/java/android/view/ViewGroup.java
core/java/android/view/ViewRootImpl.java

index d58e7c0..bc38e1a 100644 (file)
@@ -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();
             }
         }
     }
index 87d5d9a..a626d5e 100644 (file)
@@ -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);
index b5b7f0f..e8144a7 100644 (file)
@@ -14551,11 +14551,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
         return !(mAttachInfo == null || mAttachInfo.mHardwareRenderer == null);
     }
 
-    private void updateDisplayListIfDirty() {
+    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
@@ -14569,7 +14569,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
@@ -14618,19 +14618,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() {
@@ -15392,7 +15380,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
index d0d4201..ef57dc3 100644 (file)
@@ -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;
     }
 
index 4158340..2860514 100644 (file)
@@ -2322,7 +2322,7 @@ public final class ViewRootImpl implements ViewParent,
      * @hide
      */
     void outputDisplayList(View view) {
-        RenderNode renderNode = view.getDisplayList();
+        RenderNode renderNode = view.updateDisplayListIfDirty();
         if (renderNode != null) {
             renderNode.output();
         }