Don't recreate view's display list when size hasn't changed

Minor optimization in setFrame(), to force recreation of
a view's display list only when the actual size of the view has
changed.

Change-Id: Id07bd6943beec30de731ae8469ba881f5c0d9ac6
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 4385c2f..dba6d31 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -10756,12 +10756,14 @@
             // Remember our drawn bit
             int drawn = mPrivateFlags & DRAWN;
 
-            // Invalidate our old position
-            invalidate(true);
-
-
             int oldWidth = mRight - mLeft;
             int oldHeight = mBottom - mTop;
+            int newWidth = right - left;
+            int newHeight = bottom - top;
+            boolean sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight);
+
+            // Invalidate our old position
+            invalidate(sizeChanged);
 
             mLeft = left;
             mTop = top;
@@ -10770,10 +10772,8 @@
 
             mPrivateFlags |= HAS_BOUNDS;
 
-            int newWidth = right - left;
-            int newHeight = bottom - top;
 
-            if (newWidth != oldWidth || newHeight != oldHeight) {
+            if (sizeChanged) {
                 if ((mPrivateFlags & PIVOT_EXPLICITLY_SET) == 0) {
                     // A change in dimension means an auto-centered pivot point changes, too
                     mMatrixDirty = true;
@@ -10788,7 +10788,7 @@
                 // before this call to setFrame came in, thereby clearing
                 // the DRAWN bit.
                 mPrivateFlags |= DRAWN;
-                invalidate(true);
+                invalidate(sizeChanged);
                 // parent display list may need to be recreated based on a change in the bounds
                 // of any child
                 invalidateParentCaches();