jobject createJavaPattern(JNIEnv *env, pattern* cpat) { if (cpat == NULL) return NULL; jclass patClass = (*env)->FindClass(env, "sage/SFIRTuner$Pattern"); jmethodID patConst = (*env)->GetMethodID(env, patClass, "<init>", "()V"); jobject rv = (*env)->NewObject(env, patClass, patConst); SetIntField(env, rv, "bit_length", cpat->bit_length); SetIntField(env, rv, "length", cpat->length); SetCharField(env, rv, "r_flag", cpat->r_flag); jbyteArray daBytes = (*env)->NewByteArray(env, cpat->length); (*env)->SetByteArrayRegion(env, daBytes, 0, cpat->length, (jbyte*)cpat->bytes); SetObjectField(env, rv, "bytes", "[B", daBytes); if (cpat->next != NULL) SetObjectField(env, rv, "next", "Lsage/SFIRTuner$Pattern;", createJavaPattern(env, cpat->next)); return rv; }
JNIEXPORT jboolean JNICALL Java_com_sun_media_renderer_video_XLibRenderer_xlibInitialize(JNIEnv *env, jobject blitter) { XlibBlitter *xblitter = (XlibBlitter*) malloc(sizeof(XlibBlitter)); SetIntField(env, blitter, "blitter", (int)xblitter); /* Initialize fields */ xblitter->display = NULL; xblitter->visual = NULL; xblitter->imageData = NULL; xblitter->component = NULL; xblitter->scaledData= NULL; xblitter->xincs = NULL; xblitter->yincs = NULL; xblitter->ximage = NULL; xblitter->outWidth = -1; xblitter->outHeight = -1; xblitter->surface = NULL; xblitter->shmAvailable = 0; xblitter->shmActive = 0; xblitter->awtObj = 0; xblitter->drawingSurface = 0; return 1; }
void generateJavaLangClassInstances() { // Allocate Class[] containing only those classes that are referenced: javaLangClassArray = NewObjectArray((jint) numberOfAllClassInstanceInfo, CLASS_ID_java_lang_Class, NULL); if (javaLangClassArray != NULL) { // Don't GC our array of classes: heapProtect(javaLangClassArray, TRUE); int i; for (i = 0; i < numberOfAllClassInstanceInfo; i++) { // Simulate: Class cl = new Class(); // TODO NewObject !!! // TODO Lazy load? u2 size; getClassSize(CLASS_ID_java_lang_Class, &size); jobject jc = heapAllocObjectByStackableSize(size, CLASS_ID_java_lang_Class); SetIntField(jc, LINK_ID_java_lang_Class_aClassId_I, i); if (ExceptionCheck()) { break; } SetObjectArrayElement(javaLangClassArray, i, jc); if (ExceptionCheck()) { break; } } // Set the aAllClasses in java.lang.Class: jclass classInstance = getJavaLangClass(CLASS_ID_java_lang_Class); SetStaticObjectField(classInstance, LINK_ID_java_lang_Class_aAllClasses__Ljava_lang_Class_, javaLangClassArray); // No need of protection: heapProtect(javaLangClassArray, FALSE); } // consout("class init done\n"); }
void deprecated_generateJavaLangClassInstances() { int i; int j; int arrayLength = 0; // Calculate the length of the Class[] to generate: for (i = 0; i < numberOfAllClassReferences; i++) { // The candidate for java.lang.Class generation: u2 classId = allClassReferences[i].targetClassId; // Verify that it hasn't been generated before: BOOL found = FALSE; for (j = 0; j < i - 1 && !found; j++) { found = allClassReferences[j].targetClassId == classId; } if (!found) { arrayLength++; } } consoutli("arrayLength: %d\n", arrayLength); // Allocate Class[] containing only those classes that are referenced: javaLangClassArray = NewObjectArray((jint) arrayLength, CLASS_ID_java_lang_Class, NULL); if (javaLangClassArray != NULL) { // Don't GC our array of classes: heapProtect(javaLangClassArray, TRUE); int arrayIndex = 0; u2 aClassIdLinkId = LINK_ID_java_lang_Class_aClassId_I; jclass classInstance = NULL; for (i = 0; i < numberOfAllClassReferences; i++) { // The candidate for java.lang.Class generation: u2 classId = allClassReferences[i].targetClassId; // Verify that it hasn't been generated before: BOOL found = FALSE; for (j = 0; j < i - 1 && !found; j++) { found = allClassReferences[j].targetClassId == classId; } if (!found) { // The class instance does not exist yet: // Simulate: Class cl = new Class(); u2 size; getClassSize(CLASS_ID_java_lang_Class, &size); jobject jc = heapAllocObjectByStackableSize(size, CLASS_ID_java_lang_Class); SetIntField(jc, aClassIdLinkId, classId); if (ExceptionCheck()) { break; } consoutli("class id: %d\n", classId); if (classId == CLASS_ID_java_lang_Class) { classInstance = jc; consoutli("class: \n"); } SetObjectArrayElement(javaLangClassArray, arrayIndex, jc); arrayIndex++; } } // Set the aAllClasses in java.lang.Class: SetStaticObjectField(classInstance, LINK_ID_java_lang_Class_aAllClasses__Ljava_lang_Class_, javaLangClassArray); } // consout("class init done\n"); }