Adding allocation reference counting to the a3d models.

Change-Id: I225b431d09bfebbebf49df75b7df5e4d5961a564
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index d62fa55..7d31bd6 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -391,7 +391,8 @@
     alloc->setName(name.string(), name.size());
 
     // Read in all of our allocation data
-    stream->loadByteArray(alloc->getPtr(), dataSize);
+    alloc->data(stream->getPtr() + stream->getPos(), dataSize);
+    stream->reset(stream->getPos() + dataSize);
 
     return alloc;
 }
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp
index 05902f9..5dee1fb 100644
--- a/libs/rs/rsElement.cpp
+++ b/libs/rs/rsElement.cpp
@@ -114,6 +114,7 @@
     Element *elem = new Element(rsc);
     elem->mComponent.loadFromStream(stream);
     elem->mBits = elem->mComponent.getBits();
+    elem->mHasReference = elem->mComponent.isReference();
 
     elem->mFieldCount = stream->loadU32();
     if(elem->mFieldCount) {
@@ -125,6 +126,10 @@
             elem->mFields[ct].e.set(fieldElem);
             elem->mFields[ct].offsetBits = offset;
             offset += fieldElem->getSizeBits();
+            // Check if our sub-elements have references
+            if(fieldElem->mHasReference) {
+                elem->mHasReference = true;
+            }
         }
     }