summaryrefslogtreecommitdiff
path: root/graphics/java/android/renderscript/RenderScript.java
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-08-25 14:31:48 -0700
committerJason Sams <rjsams@android.com>2010-08-25 14:41:20 -0700
commit1d45c47975ab2a8cef6db5a8976276de31e1e8d0 (patch)
tree1db2203004e52f51e4f0296adf4d4c332ea3dd56 /graphics/java/android/renderscript/RenderScript.java
parent7462fc738fdaa5095d42f6176940c7111a2a54ac (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.java25
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) {