Merge branch 'donut' of ssh://android-git.corp.google.com:29418/platform/frameworks/base into donut

This commit is contained in:
The Android Open Source Project
2009-05-07 18:34:11 -07:00
5 changed files with 158 additions and 105 deletions

View File

@@ -291,7 +291,13 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glColorPointerBounds(
(GLint)size,
(GLenum)type,
@@ -299,9 +305,6 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
@@ -2762,16 +2765,19 @@ android_glNormalPointerBounds__IILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glNormalPointerBounds(
(GLenum)type,
(GLsizei)stride,
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
@@ -3014,7 +3020,13 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glTexCoordPointerBounds(
(GLint)size,
(GLenum)type,
@@ -3022,9 +3034,6 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
@@ -3369,7 +3378,13 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glVertexPointerBounds(
(GLint)size,
(GLenum)type,
@@ -3377,9 +3392,6 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */

View File

@@ -291,7 +291,13 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glColorPointerBounds(
(GLint)size,
(GLenum)type,
@@ -299,9 +305,6 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
@@ -2762,16 +2765,19 @@ android_glNormalPointerBounds__IILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glNormalPointerBounds(
(GLenum)type,
(GLsizei)stride,
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
@@ -3014,7 +3020,13 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glTexCoordPointerBounds(
(GLint)size,
(GLenum)type,
@@ -3022,9 +3034,6 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
@@ -3369,7 +3378,13 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
jint _remaining;
GLvoid *pointer = (GLvoid *) 0;
pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
if (pointer_buf) {
pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf);
if ( ! pointer ) {
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
return;
}
}
glVertexPointerBounds(
(GLint)size,
(GLenum)type,
@@ -3377,9 +3392,6 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
(GLvoid *)pointer,
(GLsizei)remaining
);
if (_array) {
releasePointer(_env, _array, pointer, JNI_FALSE);
}
}
/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */

View File

@@ -395,13 +395,6 @@ public class GLES10 {
int stride,
java.nio.Buffer pointer
) {
if ((size == 4) &&
((type == GL_FLOAT) ||
(type == GL_UNSIGNED_BYTE) ||
(type == GL_FIXED)) &&
(stride >= 0)) {
_colorPointer = pointer;
}
glColorPointerBounds(
size,
type,
@@ -409,6 +402,13 @@ public class GLES10 {
pointer,
pointer.remaining()
);
if ((size == 4) &&
((type == GL_FLOAT) ||
(type == GL_UNSIGNED_BYTE) ||
(type == GL_FIXED)) &&
(stride >= 0)) {
_colorPointer = pointer;
}
}
// C function void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )
@@ -956,6 +956,12 @@ public class GLES10 {
int stride,
java.nio.Buffer pointer
) {
glNormalPointerBounds(
type,
stride,
pointer,
pointer.remaining()
);
if (((type == GL_FLOAT) ||
(type == GL_BYTE) ||
(type == GL_SHORT) ||
@@ -963,12 +969,6 @@ public class GLES10 {
(stride >= 0)) {
_normalPointer = pointer;
}
glNormalPointerBounds(
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar )
@@ -1149,6 +1149,13 @@ public class GLES10 {
int stride,
java.nio.Buffer pointer
) {
glTexCoordPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
if (((size == 2) ||
(size == 3) ||
(size == 4)) &&
@@ -1159,13 +1166,6 @@ public class GLES10 {
(stride >= 0)) {
_texCoordPointer = pointer;
}
glTexCoordPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glTexEnvf ( GLenum target, GLenum pname, GLfloat param )
@@ -1294,6 +1294,13 @@ public class GLES10 {
int stride,
java.nio.Buffer pointer
) {
glVertexPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
if (((size == 2) ||
(size == 3) ||
(size == 4)) &&
@@ -1304,13 +1311,6 @@ public class GLES10 {
(stride >= 0)) {
_vertexPointer = pointer;
}
glVertexPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )

View File

@@ -172,13 +172,6 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
int stride,
java.nio.Buffer pointer
) {
if ((size == 4) &&
((type == GL_FLOAT) ||
(type == GL_UNSIGNED_BYTE) ||
(type == GL_FIXED)) &&
(stride >= 0)) {
_colorPointer = pointer;
}
glColorPointerBounds(
size,
type,
@@ -186,6 +179,13 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
pointer,
pointer.remaining()
);
if ((size == 4) &&
((type == GL_FLOAT) ||
(type == GL_UNSIGNED_BYTE) ||
(type == GL_FIXED)) &&
(stride >= 0)) {
_colorPointer = pointer;
}
}
// C function void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )
@@ -744,6 +744,12 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
int stride,
java.nio.Buffer pointer
) {
glNormalPointerBounds(
type,
stride,
pointer,
pointer.remaining()
);
if (((type == GL_FLOAT) ||
(type == GL_BYTE) ||
(type == GL_SHORT) ||
@@ -751,12 +757,6 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
(stride >= 0)) {
_normalPointer = pointer;
}
glNormalPointerBounds(
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar )
@@ -937,6 +937,13 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
int stride,
java.nio.Buffer pointer
) {
glTexCoordPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
if (((size == 2) ||
(size == 3) ||
(size == 4)) &&
@@ -947,13 +954,6 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
(stride >= 0)) {
_texCoordPointer = pointer;
}
glTexCoordPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glTexEnvf ( GLenum target, GLenum pname, GLfloat param )
@@ -1082,6 +1082,13 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
int stride,
java.nio.Buffer pointer
) {
glVertexPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
if (((size == 2) ||
(size == 3) ||
(size == 4)) &&
@@ -1092,13 +1099,6 @@ public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack {
(stride >= 0)) {
_vertexPointer = pointer;
}
glVertexPointerBounds(
size,
type,
stride,
pointer,
pointer.remaining()
);
}
// C function void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )

View File

@@ -454,6 +454,15 @@ public class JniCodeEmitter {
String iii = indent + indent;
// emitBoundsChecks(jfunc, out, iii);
emitFunctionCall(jfunc, out, iii, false);
// Set the pointer after we call the native code, so that if
// the native code throws an exception we don't modify the
// pointer. We assume that the native code is written so that
// if an exception is thrown, then the underlying glXXXPointer
// function will not have been called.
String fname = jfunc.getName();
if (isPointerFunc) {
// TODO - deal with VBO variants
@@ -498,9 +507,6 @@ public class JniCodeEmitter {
}
}
// emitBoundsChecks(jfunc, out, iii);
emitFunctionCall(jfunc, out, iii, false);
boolean isVoid = jfunc.getType().isVoid();
if (!isVoid) {
@@ -873,19 +879,39 @@ public class JniCodeEmitter {
String array = numBufferArgs <= 1 ? "_array" :
"_" + bufferArgNames.get(bufArgIdx++) + "Array";
boolean nullAllowed = isNullAllowed(cfunc);
boolean nullAllowed = isNullAllowed(cfunc) || isPointerFunc;
if (nullAllowed) {
out.println(indent + "if (" + cname + "_buf) {");
out.print(indent);
}
out.println(indent +
if (isPointerFunc) {
out.println(indent +
cname +
" = (" +
cfunc.getArgType(cIndex).getDeclaration() +
")getPointer(_env, " +
cname +
"_buf, &" + array + ", &" + remaining + ");");
") _env->GetDirectBufferAddress(" +
(mUseCPlusPlus ? "" : "_env, ") +
cname + "_buf);");
String iii = " ";
out.println(iii + indent + "if ( ! " + cname + " ) {");
out.println(iii + iii + indent +
(mUseCPlusPlus ? "_env" : "(*_env)") +
"->ThrowNew(" +
(mUseCPlusPlus ? "" : "_env, ") +
"IAEClass, \"Must use a native order direct Buffer\");");
out.println(iii + iii + indent + "return;");
out.println(iii + indent + "}");
} else {
out.println(indent +
cname +
" = (" +
cfunc.getArgType(cIndex).getDeclaration() +
")getPointer(_env, " +
cname +
"_buf, &" + array + ", &" + remaining +
");");
}
if (nullAllowed) {
out.println(indent + "}");
@@ -987,17 +1013,20 @@ public class JniCodeEmitter {
");");
out.println(indent + "}");
} else if (jfunc.getArgType(idx).isBuffer()) {
String array = numBufferArgs <= 1 ? "_array" :
"_" + bufferArgNames.get(bufArgIdx++) + "Array";
out.println(indent + "if (" + array + ") {");
out.println(indent + indent +
"releasePointer(_env, " + array + ", " +
cfunc.getArgName(cIndex) +
", " +
(cfunc.getArgType(cIndex).isConst() ?
"JNI_FALSE" : "_exception ? JNI_FALSE : JNI_TRUE") +
");");
out.println(indent + "}");
if (! isPointerFunc) {
String array = numBufferArgs <= 1 ? "_array" :
"_" + bufferArgNames.get(bufArgIdx++) + "Array";
out.println(indent + "if (" + array + ") {");
out.println(indent + indent +
"releasePointer(_env, " + array + ", " +
cfunc.getArgName(cIndex) +
", " +
(cfunc.getArgType(cIndex).isConst() ?
"JNI_FALSE" : "_exception ? JNI_FALSE :" +
" JNI_TRUE") +
");");
out.println(indent + "}");
}
}
}
}