summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-08-12 12:44:02 -0700
committerJason Sams <rjsams@android.com>2010-08-12 12:47:04 -0700
commitee73498ddf896f6ed003e9ce1fab87aefda90173 (patch)
treee7695920638136e1cbdfbeade8cfb78b4fe8bfce /libs/rs
parent5320b326a48a473f58d0e99a81d75f277254b958 (diff)
downloadframeworks_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.cpp3
-rw-r--r--libs/rs/rsElement.cpp4
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;
}