155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferstatic void 355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferandroid_glGetActiveUniform__III_3II_3II_3II_3BI 455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) { 555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _exception = 0; 655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer const char * _exceptionType; 755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer const char * _exceptionMessage; 855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLsizei *length_base = (GLsizei *) 0; 955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _lengthRemaining; 1055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLsizei *length = (GLsizei *) 0; 1155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size_base = (GLint *) 0; 1255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeRemaining; 1355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size = (GLint *) 0; 1455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type_base = (GLenum *) 0; 1555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeRemaining; 1655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type = (GLenum *) 0; 1755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char *name_base = (char *) 0; 1855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _nameRemaining; 1955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char *name = (char *) 0; 2055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 2155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!length_ref) { 2255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 2355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 2455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "length == null"; 2555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 2655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 2755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (lengthOffset < 0) { 2855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 2955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 3055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "lengthOffset < 0"; 3155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 3255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 3355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 3455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer length_base = (GLsizei *) 3555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 3655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer length = length_base + lengthOffset; 3755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 3855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!size_ref) { 3955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 4055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 4155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "size == null"; 4255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 4355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 4455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (sizeOffset < 0) { 4555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 4655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 4755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 4855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 4955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 5055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 5155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size_base = (GLint *) 5255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 5355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = size_base + sizeOffset; 5455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 5555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!type_ref) { 5655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 5755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 5855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "type == null"; 5955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 6055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 6155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (typeOffset < 0) { 6255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 6355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 6455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 6555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 6655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 6755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 6855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type_base = (GLenum *) 6955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 7055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = type_base + typeOffset; 7155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 7255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!name_ref) { 7355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 7455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "name == null"; 7655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 7755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 7855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (nameOffset < 0) { 7955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 8055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 8155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "nameOffset < 0"; 8255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 8355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 8455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 8555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer name_base = (char *) 8655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0); 8755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer name = name_base + nameOffset; 8855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 8955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetActiveUniform( 9055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)program, 9155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)index, 9255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLsizei)bufsize, 9355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLsizei *)length, 9455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLint *)size, 9555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLenum *)type, 9655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (char *)name 9755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer ); 9855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 9955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferexit: 10055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (name_base) { 10155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(name_ref, name_base, 10255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 10355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 10455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (type_base) { 10555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 10655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 10755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 10855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (size_base) { 10955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 11055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 11155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 11255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (length_base) { 11355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 11455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 11555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 11655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_exception) { 11755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 11855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 11955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer} 12055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 12155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 12255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferstatic void 12355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferandroid_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 12455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 12555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jarray _lengthArray = (jarray) 0; 12655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _lengthBufferOffset = (jint) 0; 12755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jarray _sizeArray = (jarray) 0; 12855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 12955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jarray _typeArray = (jarray) 0; 13055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeBufferOffset = (jint) 0; 13155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _lengthRemaining; 13255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLsizei *length = (GLsizei *) 0; 13355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeRemaining; 13455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size = (GLint *) 0; 13555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeRemaining; 13655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type = (GLenum *) 0; 13755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 13855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 13955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 14055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 14155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (length == NULL) { 14255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 14355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 14455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 14555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (size == NULL) { 14655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 14755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 14855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 14955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (type == NULL) { 15055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 15155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 15255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 15355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetActiveUniform( 15455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)program, 15555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)index, 15655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLsizei)bufsize, 15755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLsizei *)length, 15855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLint *)size, 15955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLenum *)type, 160d8f096114da14f9793d4cca6022ca41b70ab9daaAshok Bhat reinterpret_cast<char *>(name) 16155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer ); 16255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_typeArray) { 16355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 16455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 16555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_sizeArray) { 16655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 16755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 16855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_lengthArray) { 16955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer releasePointer(_env, _lengthArray, length, JNI_TRUE); 17055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 17155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer} 17255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 17355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 17455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferstatic jstring 17555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferandroid_glGetActiveUniform1 17655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 17755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _exception = 0; 17855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer const char * _exceptionType; 17955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer const char * _exceptionMessage; 18055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 18155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size_base = (GLint *) 0; 18255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeRemaining; 18355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size = (GLint *) 0; 18455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 18555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type_base = (GLenum *) 0; 18655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeRemaining; 18755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type = (GLenum *) 0; 18855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 18955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jstring result = 0; 19055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 19155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint len = 0; 19255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len); 19355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!len) { 19455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return _env->NewStringUTF(""); 19555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 19655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char* buf = (char*) malloc(len); 19755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 19855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (buf == NULL) { 19955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 20055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return NULL; 20155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 20255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 20355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!size_ref) { 20455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 20555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "size == null"; 20755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 20855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 20955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (sizeOffset < 0) { 21055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 21155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 21255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 21355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 21455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 21555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 21655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size_base = (GLint *) 21755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 21855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = size_base + sizeOffset; 21955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 22055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!type_ref) { 22155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 22255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 22355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "type == null"; 22455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 22555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 22655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (typeOffset < 0) { 22755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception = 1; 22855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 22955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 23055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer goto exit; 23155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 23255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 23355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type_base = (GLenum *) 23455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 23555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = type_base + typeOffset; 23655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 23755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetActiveUniform( 23855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)program, 23955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)index, 24055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLsizei)len, 24155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer NULL, 24255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLint *)size, 24355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLenum *)type, 24455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (char *)buf 24555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer ); 24655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 24755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferexit: 24855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (type_base) { 24955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 25055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 25155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 25255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (size_base) { 25355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 25455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer _exception ? JNI_ABORT: 0); 25555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 25655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_exception != 1) { 25755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer result = _env->NewStringUTF(buf); 25855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 25955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (buf) { 26055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer free(buf); 26155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 26255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_exception) { 26355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 26455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 26555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (result == 0) { 26655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer result = _env->NewStringUTF(""); 26755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 26855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return result; 26955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer} 27055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 27155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 27255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferstatic jstring 27355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshoferandroid_glGetActiveUniform2 27455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 27555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jarray _sizeArray = (jarray) 0; 27655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 27755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jarray _typeArray = (jarray) 0; 27855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeBufferOffset = (jint) 0; 27955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _sizeRemaining; 28055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint *size = (GLint *) 0; 28155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jint _typeRemaining; 28255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLenum *type = (GLenum *) 0; 28355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 28455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jstring result = 0; 28555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer GLint len = 0; 28655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len); 28755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (!len) { 28855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return _env->NewStringUTF(""); 28955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 29055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char* buf = (char*) malloc(len); 29155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 29255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (buf == NULL) { 29355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 29455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return NULL; 29555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 29655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 29755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 29855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 29955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 30055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (size == NULL) { 30155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 30255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 30355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 30455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (type == NULL) { 30555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 30655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 30755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 30855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer glGetActiveUniform( 30955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)program, 31055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLuint)index, 31155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer len, 31255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer NULL, 31355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLint *)size, 31455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (GLenum *)type, 31555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer (char *)buf 31655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer ); 31755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer 31855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_typeArray) { 31955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 32055b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 32155b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (_sizeArray) { 32255b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 32355b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 32455b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer result = _env->NewStringUTF(buf); 32555b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer if (buf) { 32655b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer free(buf); 32755b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer } 32855b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer return result; 32955b4e553c8e6021cb65a9ac99857bfbf4d4f335dThomas Tafertshofer} 330