diff options
| author | 2011-12-22 13:11:48 -0800 | |
|---|---|---|
| committer | 2011-12-22 13:11:48 -0800 | |
| commit | 3aac0abe7965ce9e2078c7d5796805d83e39df7c (patch) | |
| tree | d562c10f687ce53cbd3fd11d47722803225c260a /libs/rs/rsElement.cpp | |
| parent | a6db9389bd429e8d894209473301475159829b52 (diff) | |
Adding tests for element/mesh getters.
Fixing bugs found by tests.
Change-Id: I6592a3b65f16b21255e7788fe8ee8aaafe268638
Diffstat (limited to 'libs/rs/rsElement.cpp')
| -rw-r--r-- | libs/rs/rsElement.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp index 1e022cfc251d..24c873822387 100644 --- a/libs/rs/rsElement.cpp +++ b/libs/rs/rsElement.cpp @@ -27,6 +27,7 @@ Element::Element(Context *rsc) : ObjectBase(rsc) { mFields = NULL; mFieldCount = 0; mHasReference = false; + memset(&mHal, 0, sizeof(mHal)); } Element::~Element() { @@ -176,16 +177,23 @@ void Element::compute() { return; } - mHal.state.fields = new const Element*[mFieldCount]; - mHal.state.fieldArraySizes = new uint32_t[mFieldCount]; - mHal.state.fieldNames = new const char*[mFieldCount]; - mHal.state.fieldNameLengths = new uint32_t[mFieldCount]; - mHal.state.fieldOffsetBytes = new uint32_t[mFieldCount]; - mHal.state.fieldsCount = mFieldCount; + uint32_t noPaddingFieldCount = 0; + for (uint32_t ct = 0; ct < mFieldCount; ct ++) { + if (mFields[ct].name.string()[0] != '#') { + noPaddingFieldCount ++; + } + } + + mHal.state.fields = new const Element*[noPaddingFieldCount]; + mHal.state.fieldArraySizes = new uint32_t[noPaddingFieldCount]; + mHal.state.fieldNames = new const char*[noPaddingFieldCount]; + mHal.state.fieldNameLengths = new uint32_t[noPaddingFieldCount]; + mHal.state.fieldOffsetBytes = new uint32_t[noPaddingFieldCount]; + mHal.state.fieldsCount = noPaddingFieldCount; size_t bits = 0; size_t bitsUnpadded = 0; - for (size_t ct=0; ct < mFieldCount; ct++) { + for (size_t ct = 0, ctNoPadding = 0; ct < mFieldCount; ct++) { mFields[ct].offsetBits = bits; mFields[ct].offsetBitsUnpadded = bitsUnpadded; bits += mFields[ct].e->getSizeBits() * mFields[ct].arraySize; @@ -195,11 +203,17 @@ void Element::compute() { mHasReference = true; } - mHal.state.fields[ct] = mFields[ct].e.get(); - mHal.state.fieldArraySizes[ct] = mFields[ct].arraySize; - mHal.state.fieldNames[ct] = mFields[ct].name.string(); - mHal.state.fieldNameLengths[ct] = mFields[ct].name.length() + 1; // to include 0 - mHal.state.fieldOffsetBytes[ct] = mFields[ct].offsetBits >> 3; + if (mFields[ct].name.string()[0] == '#') { + continue; + } + + mHal.state.fields[ctNoPadding] = mFields[ct].e.get(); + mHal.state.fieldArraySizes[ctNoPadding] = mFields[ct].arraySize; + mHal.state.fieldNames[ctNoPadding] = mFields[ct].name.string(); + mHal.state.fieldNameLengths[ctNoPadding] = mFields[ct].name.length() + 1; // to include 0 + mHal.state.fieldOffsetBytes[ctNoPadding] = mFields[ct].offsetBits >> 3; + + ctNoPadding ++; } mHal.state.elementSizeBytes = getSizeBytes(); |