Avoid NPE in postInvalidate().
Bug #4048131

Change-Id: I020400fc97015240924461674ca7bf8077059152
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index c729ccd..0f2e9d2 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7323,8 +7323,9 @@
      */
     public boolean post(Runnable action) {
         Handler handler;
-        if (mAttachInfo != null) {
-            handler = mAttachInfo.mHandler;
+        AttachInfo attachInfo = mAttachInfo;
+        if (attachInfo != null) {
+            handler = attachInfo.mHandler;
         } else {
             // Assume that post will succeed later
             ViewRoot.getRunQueue().post(action);
@@ -7352,8 +7353,9 @@
      */
     public boolean postDelayed(Runnable action, long delayMillis) {
         Handler handler;
-        if (mAttachInfo != null) {
-            handler = mAttachInfo.mHandler;
+        AttachInfo attachInfo = mAttachInfo;
+        if (attachInfo != null) {
+            handler = attachInfo.mHandler;
         } else {
             // Assume that post will succeed later
             ViewRoot.getRunQueue().postDelayed(action, delayMillis);
@@ -7375,8 +7377,9 @@
      */
     public boolean removeCallbacks(Runnable action) {
         Handler handler;
-        if (mAttachInfo != null) {
-            handler = mAttachInfo.mHandler;
+        AttachInfo attachInfo = mAttachInfo;
+        if (attachInfo != null) {
+            handler = attachInfo.mHandler;
         } else {
             // Assume that post will succeed later
             ViewRoot.getRunQueue().removeCallbacks(action);
@@ -7423,11 +7426,12 @@
     public void postInvalidateDelayed(long delayMilliseconds) {
         // We try only with the AttachInfo because there's no point in invalidating
         // if we are not attached to our window
-        if (mAttachInfo != null) {
+        AttachInfo attachInfo = mAttachInfo;
+        if (attachInfo != null) {
             Message msg = Message.obtain();
             msg.what = AttachInfo.INVALIDATE_MSG;
             msg.obj = this;
-            mAttachInfo.mHandler.sendMessageDelayed(msg, delayMilliseconds);
+            attachInfo.mHandler.sendMessageDelayed(msg, delayMilliseconds);
         }
     }
 
@@ -7447,7 +7451,8 @@
 
         // We try only with the AttachInfo because there's no point in invalidating
         // if we are not attached to our window
-        if (mAttachInfo != null) {
+        AttachInfo attachInfo = mAttachInfo;
+        if (attachInfo != null) {
             final AttachInfo.InvalidateInfo info = AttachInfo.InvalidateInfo.acquire();
             info.target = this;
             info.left = left;
@@ -7458,7 +7463,7 @@
             final Message msg = Message.obtain();
             msg.what = AttachInfo.INVALIDATE_RECT_MSG;
             msg.obj = info;
-            mAttachInfo.mHandler.sendMessageDelayed(msg, delayMilliseconds);
+            attachInfo.mHandler.sendMessageDelayed(msg, delayMilliseconds);
         }
     }