diff options
author | Jason Sams <rjsams@android.com> | 2010-08-12 12:44:02 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-08-12 12:47:04 -0700 |
commit | ee73498ddf896f6ed003e9ce1fab87aefda90173 (patch) | |
tree | e7695920638136e1cbdfbeade8cfb78b4fe8bfce /libs/rs | |
parent | 5320b326a48a473f58d0e99a81d75f277254b958 (diff) | |
download | frameworks_base-ee73498ddf896f6ed003e9ce1fab87aefda90173.zip frameworks_base-ee73498ddf896f6ed003e9ce1fab87aefda90173.tar.gz frameworks_base-ee73498ddf896f6ed003e9ce1fab87aefda90173.tar.bz2 |
Fix field packer bug for U32 data.
Fix initial refcounts in allocations.
Support null references in allocations.
Change-Id: Ifba6406ba750e69737bd77fa7df5d7fb8e27a5b4
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/rsAllocation.cpp | 3 | ||||
-rw-r--r-- | libs/rs/rsElement.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index 7d31bd6..7e44fea 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -34,6 +34,9 @@ Allocation::Allocation(Context *rsc, const Type *type) : ObjectBase(rsc) init(rsc, type); mPtr = malloc(mType->getSizeBytes()); + if (mType->getElement()->getHasReferences()) { + memset(mPtr, 0, mType->getSizeBytes()); + } if (!mPtr) { LOGE("Allocation::Allocation, alloc failure"); } diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp index 5dee1fb..2602dd4 100644 --- a/libs/rs/rsElement.cpp +++ b/libs/rs/rsElement.cpp @@ -266,7 +266,7 @@ void Element::incRefs(const void *ptr) const if (mComponent.isReference()) { ObjectBase *const*obp = static_cast<ObjectBase *const*>(ptr); ObjectBase *ob = obp[0]; - ob->incSysRef(); + if (ob) ob->incSysRef(); } return; } @@ -285,7 +285,7 @@ void Element::decRefs(const void *ptr) const if (mComponent.isReference()) { ObjectBase *const*obp = static_cast<ObjectBase *const*>(ptr); ObjectBase *ob = obp[0]; - ob->decSysRef(); + if (ob) ob->decSysRef(); } return; } |