Don't draw layers in buildLayer()

Creating the layer, if necessary, takes the bulk
of the time - just do the creation, and schedule a
deferred update

Change-Id: I21399ebd5d2929a4f242ec1c08e3f97fed1ef58a
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index ecfca74..aea7c30 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -10220,7 +10220,7 @@
                 if (mAttachInfo.mHardwareRenderer != null &&
                         mAttachInfo.mHardwareRenderer.isEnabled() &&
                         mAttachInfo.mHardwareRenderer.validate()) {
-                    getHardwareLayer(true);
+                    getHardwareLayer();
                 }
                 break;
             case LAYER_TYPE_SOFTWARE:
@@ -10242,7 +10242,7 @@
      *
      * @return A HardwareLayer ready to render, or null if an error occurred.
      */
-    HardwareLayer getHardwareLayer(boolean immediateRefresh) {
+    HardwareLayer getHardwareLayer() {
         if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null ||
                 !mAttachInfo.mHardwareRenderer.isEnabled()) {
             return null;
@@ -10272,33 +10272,8 @@
                 return null;
             }
 
-            if (!immediateRefresh) {
-                mHardwareLayer.redraw(getDisplayList(), mLocalDirtyRect);
-                mLocalDirtyRect.setEmpty();
-            } else {
-                HardwareCanvas currentCanvas = mAttachInfo.mHardwareCanvas;
-                final HardwareCanvas canvas = mHardwareLayer.start(currentCanvas);
-    
-                // Make sure all the GPU resources have been properly allocated
-                if (canvas == null) {
-                    mHardwareLayer.end(currentCanvas);
-                    return null;
-                }
-    
-                mAttachInfo.mHardwareCanvas = canvas;
-                try {
-                    canvas.setViewport(width, height);
-                    canvas.onPreDraw(mLocalDirtyRect);
-                    mLocalDirtyRect.setEmpty();
-                    
-                    canvas.drawDisplayList(getDisplayList(), mRight - mLeft, mBottom - mTop, null,
-                            DisplayList.FLAG_CLIP_CHILDREN);
-                } finally {
-                    canvas.onPostDraw();
-                    mHardwareLayer.end(currentCanvas);
-                    mAttachInfo.mHardwareCanvas = currentCanvas;
-                }
-            }
+            mHardwareLayer.redraw(getDisplayList(), mLocalDirtyRect);
+            mLocalDirtyRect.setEmpty();
         }
 
         return mHardwareLayer;
@@ -11265,7 +11240,7 @@
         if (hasNoCache) {
             boolean layerRendered = false;
             if (layerType == LAYER_TYPE_HARDWARE) {
-                final HardwareLayer layer = getHardwareLayer(false);
+                final HardwareLayer layer = getHardwareLayer();
                 if (layer != null && layer.isValid()) {
                     mLayerPaint.setAlpha((int) (alpha * 255));
                     ((HardwareCanvas) canvas).drawHardwareLayer(layer, 0, 0, mLayerPaint);