summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYang Ni <yangni@google.com>2015-05-11 19:40:38 -0700
committerYang Ni <yangni@google.com>2015-05-12 17:38:54 +0000
commit99bd4a4614d03e02bb4e07db15c7af5a736211a0 (patch)
treebeaa5608d8ec1f68e58d5aa4662d56c90709e61a
parent021ec27cb60dabf1926e53d6d0127029b8e19d55 (diff)
downloadandroid_frameworks_rs-99bd4a4614d03e02bb4e07db15c7af5a736211a0.tar.gz
android_frameworks_rs-99bd4a4614d03e02bb4e07db15c7af5a736211a0.tar.bz2
android_frameworks_rs-99bd4a4614d03e02bb4e07db15c7af5a736211a0.zip
Fixed CTS failure
b/21040553 ScriptGroupTest.Builder2InvokeToKernelDependency failed. Needs a copy of the FieldPacker object for invoke parameters, which was passed in as a copy by JNI and released after the closure is created. Change-Id: I092fe029394ed898dc66e5ecdbbd86c416abe46b
-rw-r--r--rsClosure.cpp5
-rw-r--r--rsClosure.h2
2 files changed, 5 insertions, 2 deletions
diff --git a/rsClosure.cpp b/rsClosure.cpp
index 4b57be4d..85bf052f 100644
--- a/rsClosure.cpp
+++ b/rsClosure.cpp
@@ -113,7 +113,9 @@ Closure::Closure(Context* context, const ScriptInvokeID* invokeID,
const void** values, const int* sizes) :
ObjectBase(context), mContext(context), mFunctionID((IDBase*)invokeID), mIsKernel(false),
mArgs(nullptr), mNumArg(0),
- mReturnValue(nullptr), mParams(params), mParamLength(paramLength) {
+ mReturnValue(nullptr), mParamLength(paramLength) {
+ mParams = new uint8_t[mParamLength];
+ memcpy(mParams, params, mParamLength);
for (size_t i = 0; i < numValues; i++) {
mGlobals[fieldIDs[i]] = make_pair(values[i], sizes[i]);
}
@@ -134,6 +136,7 @@ Closure::~Closure() {
}
delete[] mArgs;
+ delete[] mParams;
}
void Closure::setArg(const uint32_t index, const void* value, const size_t size) {
diff --git a/rsClosure.h b/rsClosure.h
index ad44821c..6847fad9 100644
--- a/rsClosure.h
+++ b/rsClosure.h
@@ -75,7 +75,7 @@ class Closure : public ObjectBase {
Map<const Closure*, Map<const ScriptFieldID*,
ObjectBaseRef<ScriptFieldID>>*> mGlobalDeps;
- const void* mParams;
+ uint8_t* mParams;
const size_t mParamLength;
};