From 1d45c47975ab2a8cef6db5a8976276de31e1e8d0 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Wed, 25 Aug 2010 14:31:48 -0700 Subject: Add matrix component types. Fix potental overflow in script -> java messages. Change-Id: Ie6fd9dc376be4043fc938a1517106936937689c8 --- .../java/android/renderscript/RenderScript.java | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'graphics/java/android/renderscript/RenderScript.java') diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index ab1d7650866a..08ba7e2901d5 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -542,6 +542,10 @@ public class RenderScript { Element mElement_FLOAT_4; Element mElement_UCHAR_4; + Element mElement_MATRIX_4X4; + Element mElement_MATRIX_3X3; + Element mElement_MATRIX_2X2; + Sampler mSampler_CLAMP_NEAREST; Sampler mSampler_CLAMP_LINEAR; Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR; @@ -614,15 +618,22 @@ public class RenderScript { int[] rbuf = new int[16]; mRS.nContextInitToClient(mRS.mContext); while(mRun) { + rbuf[0] = 0; int msg = mRS.nContextGetMessage(mRS.mContext, rbuf, true); if (msg == 0) { - // Should only happen during teardown. - // But we want to avoid starving other threads during - // teardown by yielding until the next line in the destructor - // can execute to set mRun = false - try { - sleep(1, 0); - } catch(InterruptedException e) { + // Can happen for two reasons + if (rbuf[0] > 0) { + // 1: Buffer needs to be enlarged. + rbuf = new int[rbuf[0] + 2]; + } else { + // 2: teardown. + // But we want to avoid starving other threads during + // teardown by yielding until the next line in the destructor + // can execute to set mRun = false + try { + sleep(1, 0); + } catch(InterruptedException e) { + } } } if(mRS.mMessageCallback != null) { -- cgit v1.2.3