diff options
author | Jason Sams <rjsams@android.com> | 2010-08-25 14:31:48 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-08-25 14:41:20 -0700 |
commit | 1d45c47975ab2a8cef6db5a8976276de31e1e8d0 (patch) | |
tree | 1db2203004e52f51e4f0296adf4d4c332ea3dd56 /graphics/java/android/renderscript/RenderScript.java | |
parent | 7462fc738fdaa5095d42f6176940c7111a2a54ac (diff) |
Add matrix component types.
Fix potental overflow in script -> java messages.
Change-Id: Ie6fd9dc376be4043fc938a1517106936937689c8
Diffstat (limited to 'graphics/java/android/renderscript/RenderScript.java')
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 25 |
1 files changed, 18 insertions, 7 deletions
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) { |