Elliott Hughes | 9875750 | 2011-04-08 20:01:01 -0700 | [diff] [blame] | 1 | #include <stdlib.h> |
Jack Palevich | 50d0b14 | 2009-11-19 16:34:55 +0800 | [diff] [blame] | 2 | |
| 3 | /* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ |
Elliott Hughes | 9875750 | 2011-04-08 20:01:01 -0700 | [diff] [blame] | 4 | static jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) { |
Jack Palevich | 50d0b14 | 2009-11-19 16:34:55 +0800 | [diff] [blame] | 5 | GLint infoLen = 0; |
Jack Palevich | 50d0b14 | 2009-11-19 16:34:55 +0800 | [diff] [blame] | 6 | glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen); |
Elliott Hughes | 9875750 | 2011-04-08 20:01:01 -0700 | [diff] [blame] | 7 | if (!infoLen) { |
| 8 | return _env->NewStringUTF(""); |
Jack Palevich | 50d0b14 | 2009-11-19 16:34:55 +0800 | [diff] [blame] | 9 | } |
Elliott Hughes | 9875750 | 2011-04-08 20:01:01 -0700 | [diff] [blame] | 10 | char* buf = (char*) malloc(infoLen); |
| 11 | if (buf == NULL) { |
| 12 | jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); |
| 13 | return NULL; |
Jack Palevich | 50d0b14 | 2009-11-19 16:34:55 +0800 | [diff] [blame] | 14 | } |
Elliott Hughes | 9875750 | 2011-04-08 20:01:01 -0700 | [diff] [blame] | 15 | glGetShaderInfoLog(shader, infoLen, NULL, buf); |
| 16 | jstring result = _env->NewStringUTF(buf); |
| 17 | free(buf); |
| 18 | return result; |
| 19 | } |