From fa1275a6e743c4661cc3d5e05bb89559a8e59727 Mon Sep 17 00:00:00 2001 From: Stephen Hines Date: Tue, 17 Jun 2014 17:25:04 -0700 Subject: Create FieldPacker.getPos() to get the actual amount of data used for FP. We need larger buffers to handle 64-bit RS object types, but 32-bit code will never fill all of the getData().length bytes. This allows us to retain our verification code. We have to modify an existing use of FieldPacker that was doing partial updates of the underlying buffer. This was really relying on the old data to be implicitly selected and written back, but that is not guaranteed by the original API. This also required a fix to the FieldPacker.reset() API, which was not allowing the FieldPacker to ever point to the final entry in its buffer. Change-Id: Idcd52790ac2b0ab1eff3f043e7eec2832953f04b --- rs/java/android/renderscript/FieldPacker.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'rs/java/android/renderscript/FieldPacker.java') diff --git a/rs/java/android/renderscript/FieldPacker.java b/rs/java/android/renderscript/FieldPacker.java index 576a84d03c4b..dccc1ac5f951 100644 --- a/rs/java/android/renderscript/FieldPacker.java +++ b/rs/java/android/renderscript/FieldPacker.java @@ -76,7 +76,7 @@ public class FieldPacker { mPos = 0; } public void reset(int i) { - if ((i < 0) || (i >= mLen)) { + if ((i < 0) || (i > mLen)) { throw new RSIllegalArgumentException("out of range argument: " + i); } mPos = i; @@ -606,6 +606,15 @@ public class FieldPacker { return mData; } + /** + * Get the actual length used for the FieldPacker. + * + * @hide + */ + public int getPos() { + return mPos; + } + private final byte mData[]; private int mPos; private int mLen; -- cgit v1.2.3