Add stagingProperties

Change-Id: Ic7de551f8843fd70a77f738e33028e25c020bb3c
diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h
index 177f33e..9a7f9b4 100644
--- a/libs/hwui/RenderNode.h
+++ b/libs/hwui/RenderNode.h
@@ -112,10 +112,19 @@
         }
     }
 
-    RenderProperties& properties() {
+    const RenderProperties& properties() {
         return mProperties;
     }
 
+    const RenderProperties& stagingProperties() {
+        return mStagingProperties;
+    }
+
+    RenderProperties& mutateStagingProperties() {
+        mNeedsPropertiesSync = true;
+        return mStagingProperties;
+    }
+
     bool isProjectionReceiver() {
         return properties().isProjectionReceiver();
     }
@@ -128,6 +137,8 @@
         return properties().getHeight();
     }
 
+    void updateProperties();
+
 private:
     typedef key_value_pair_t<float, DrawDisplayListOp*> ZDrawDisplayListOpPair;
 
@@ -143,8 +154,6 @@
         kPositiveZChildren
     };
 
-    void outputViewProperties(const int level);
-
     void applyViewPropertyTransforms(mat4& matrix, bool true3dTransform = false);
 
     void computeOrderingImpl(DrawDisplayListOp* opState,
@@ -183,7 +192,10 @@
     String8 mName;
     bool mDestroyed; // used for debugging crash, TODO: remove once invalid state crash fixed
 
+    bool mNeedsPropertiesSync;
     RenderProperties mProperties;
+    RenderProperties mStagingProperties;
+
     DisplayListData* mDisplayListData;
 
     /**