Ensure ScriptIntrinsicHistogram is given a valid Element in constructor when used via C++ bindings.
Correct checks for compatible elements within ScriptIntrinsicHistogram.
Add missing setVar within variable setters.
Change-Id: I404058d231676d9c7403d4327053421a624f5ae9
diff --git a/cpp/ScriptIntrinsics.cpp b/cpp/ScriptIntrinsics.cpp
index a9a31f8..e40d1a0 100644
--- a/cpp/ScriptIntrinsics.cpp
+++ b/cpp/ScriptIntrinsics.cpp
@@ -419,8 +419,8 @@
Script::setVar(0, (void*)v, sizeof(float) * 25);
}
-sp<ScriptIntrinsicHistogram> ScriptIntrinsicHistogram::create(sp<RS> rs) {
- return new ScriptIntrinsicHistogram(rs, nullptr);
+sp<ScriptIntrinsicHistogram> ScriptIntrinsicHistogram::create(sp<RS> rs, sp<const Element> e) {
+ return new ScriptIntrinsicHistogram(rs, e);
}
ScriptIntrinsicHistogram::ScriptIntrinsicHistogram(sp<RS> rs, sp<const Element> e)
@@ -476,7 +476,7 @@
return;
}
- if (!(ain->getType()->getElement()->isCompatible(Element::U8(mRS))) ||
+ if (!(ain->getType()->getElement()->isCompatible(Element::U8(mRS))) &&
!(ain->getType()->getElement()->isCompatible(Element::U8_4(mRS)))) {
mRS->throwError(RS_ERROR_INVALID_ELEMENT,
"Input allocation to Histogram must be U8 or U8_4");
@@ -494,7 +494,7 @@
"when used with forEach_dot");
return;
}
- if (!(ain->getType()->getElement()->isCompatible(Element::U8(mRS))) ||
+ if (!(ain->getType()->getElement()->isCompatible(Element::U8(mRS))) &&
!(ain->getType()->getElement()->isCompatible(Element::U8_4(mRS)))) {
mRS->throwError(RS_ERROR_INVALID_ELEMENT,
"Input allocation to Histogram must be U8 or U8_4");