示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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");

}
示例#4
0
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");
}