/* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */ static void android_glTransformFeedbackVaryings (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) { jint _exception = 0; const char* _exceptionType = NULL; const char* _exceptionMessage = NULL; jint _count = 0, _i; const char** _varyings = NULL; const char* _varying = NULL; if (!varyings_ref) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "varyings == null"; goto exit; } _count = _env->GetArrayLength(varyings_ref); _varyings = (const char**)calloc(_count, sizeof(const char*)); for (_i = 0; _i < _count; _i++) { jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); if (!_varying) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "null varyings element"; goto exit; } _varyings[_i] = _env->GetStringUTFChars(_varying, 0); } glTransformFeedbackVaryings(program, _count, _varyings, bufferMode); exit: for (_i = _count - 1; _i >= 0; _i--) { if (_varyings[_i]) { jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); if (_varying) { _env->ReleaseStringUTFChars(_varying, _varyings[_i]); } } } free(_varyings); if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); } }