summaryrefslogtreecommitdiffstats
path: root/opengl/tools/glgen/src/JniCodeEmitter.java
diff options
context:
space:
mode:
Diffstat (limited to 'opengl/tools/glgen/src/JniCodeEmitter.java')
-rw-r--r--opengl/tools/glgen/src/JniCodeEmitter.java73
1 files changed, 42 insertions, 31 deletions
diff --git a/opengl/tools/glgen/src/JniCodeEmitter.java b/opengl/tools/glgen/src/JniCodeEmitter.java
index 774f40c..d5e2d34 100644
--- a/opengl/tools/glgen/src/JniCodeEmitter.java
+++ b/opengl/tools/glgen/src/JniCodeEmitter.java
@@ -54,7 +54,7 @@ public class JniCodeEmitter {
} else if (baseType.equals("short")) {
jniName += "S";
} else if (baseType.equals("long")) {
- jniName += "L";
+ jniName += "J";
} else if (baseType.equals("byte")) {
jniName += "B";
} else if (baseType.equals("String")) {
@@ -197,30 +197,30 @@ public class JniCodeEmitter {
void printIfcheckPostamble(PrintStream out, boolean isBuffer, boolean emitExceptionCheck,
String iii) {
- printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
- "offset", "_remaining", iii);
- }
+ printIfcheckPostamble(out, isBuffer, emitExceptionCheck,
+ "offset", "_remaining", iii);
+ }
void printIfcheckPostamble(PrintStream out, boolean isBuffer, boolean emitExceptionCheck,
String offset, String remaining, String iii) {
- out.println(iii + " default:");
- out.println(iii + " _needed = 0;");
- out.println(iii + " break;");
- out.println(iii + "}");
-
- out.println(iii + "if (" + remaining + " < _needed) {");
- out.println(iii + indent + "_exception = 1;");
- out.println(iii + indent +
- "_exceptionType = \"java/lang/IllegalArgumentException\";");
- out.println(iii + indent +
- "_exceptionMessage = \"" +
- (isBuffer ? "remaining()" : "length - " + offset) +
- " < needed\";");
- out.println(iii + indent + "goto exit;");
- out.println(iii + "}");
-
- needsExit = true;
- }
+ out.println(iii + " default:");
+ out.println(iii + " _needed = 1;");
+ out.println(iii + " break;");
+ out.println(iii + "}");
+
+ out.println(iii + "if (" + remaining + " < _needed) {");
+ out.println(iii + indent + "_exception = 1;");
+ out.println(iii + indent +
+ "_exceptionType = \"java/lang/IllegalArgumentException\";");
+ out.println(iii + indent +
+ "_exceptionMessage = \"" +
+ (isBuffer ? "remaining()" : "length - " + offset) +
+ " < needed\";");
+ out.println(iii + indent + "goto exit;");
+ out.println(iii + "}");
+
+ needsExit = true;
+ }
boolean isNullAllowed(CFunc cfunc) {
String[] checks = mChecker.getChecks(cfunc.getName());
@@ -749,10 +749,20 @@ public class JniCodeEmitter {
String outName = "android_" + jfunc.getName();
boolean isPointerFunc = isPointerFunc(jfunc);
- boolean isVBOPointerFunc = (outName.endsWith("Pointer") ||
- outName.endsWith("PointerOES") ||
- outName.endsWith("DrawElements") || outName.endsWith("VertexAttribPointer")) &&
- !jfunc.getCFunc().hasPointerArg();
+ boolean isPointerOffsetFunc =
+ (outName.endsWith("Pointer") || outName.endsWith("PointerOES") ||
+ outName.endsWith("glDrawElements") ||
+ outName.endsWith("glDrawRangeElements") ||
+ outName.endsWith("glTexImage2D") ||
+ outName.endsWith("glTexSubImage2D") ||
+ outName.endsWith("glCompressedTexImage2D") ||
+ outName.endsWith("glCompressedTexSubImage2D") ||
+ outName.endsWith("glTexImage3D") ||
+ outName.endsWith("glTexSubImage3D") ||
+ outName.endsWith("glCompressedTexImage3D") ||
+ outName.endsWith("glCompressedTexSubImage3D") ||
+ outName.endsWith("glReadPixels"))
+ && !jfunc.getCFunc().hasPointerArg();
if (isPointerFunc) {
outName += "Bounds";
}
@@ -932,8 +942,8 @@ public class JniCodeEmitter {
// Emit an _exeption variable if there will be error checks
if (emitExceptionCheck) {
out.println(indent + "jint _exception = 0;");
- out.println(indent + "const char * _exceptionType;");
- out.println(indent + "const char * _exceptionMessage;");
+ out.println(indent + "const char * _exceptionType = NULL;");
+ out.println(indent + "const char * _exceptionMessage = NULL;");
}
// Emit a single _array or multiple _XXXArray variables
@@ -1271,8 +1281,8 @@ public class JniCodeEmitter {
}
for (int i = 0; i < numArgs; i++) {
String typecast;
- if (i == numArgs - 1 && isVBOPointerFunc) {
- typecast = "(const GLvoid *)";
+ if (i == numArgs - 1 && isPointerOffsetFunc) {
+ typecast = "(GLvoid *)";
} else {
typecast = "(" + cfunc.getArgType(i).getDeclaration() + ")";
}
@@ -1421,7 +1431,8 @@ public class JniCodeEmitter {
"return toEGLHandle(_env, " + baseType + "Class, " +
baseType + "Constructor, _returnValue);");
} else {
- out.println(indent + "return _returnValue;");
+ out.println(indent + "return (" +
+ getJniType(jfunc.getType()) + ")_returnValue;");
}
}