36 JNIEXPORT void JNICALL |
36 JNIEXPORT void JNICALL |
37 Java_sun_java2d_Disposer_initIDs(JNIEnv *env, jclass disposerClass) |
37 Java_sun_java2d_Disposer_initIDs(JNIEnv *env, jclass disposerClass) |
38 { |
38 { |
39 addRecordMID = (*env)->GetStaticMethodID(env, disposerClass, "addRecord", |
39 addRecordMID = (*env)->GetStaticMethodID(env, disposerClass, "addRecord", |
40 "(Ljava/lang/Object;JJ)V"); |
40 "(Ljava/lang/Object;JJ)V"); |
41 if (addRecordMID == 0) { |
41 if (addRecordMID != 0) { |
42 JNU_ThrowNoSuchMethodError(env, "Disposer.addRecord"); |
42 dispClass = (*env)->NewGlobalRef(env, disposerClass); |
43 } |
43 } |
44 dispClass = (*env)->NewGlobalRef(env, disposerClass); |
|
45 } |
44 } |
46 |
45 |
47 JNIEXPORT void JNICALL |
46 JNIEXPORT void JNICALL |
48 Disposer_AddRecord(JNIEnv *env, jobject obj, GeneralDisposeFunc disposer, jlong pData) { |
47 Disposer_AddRecord(JNIEnv *env, jobject obj, GeneralDisposeFunc disposer, jlong pData) { |
49 |
48 |
50 if (dispClass == NULL) { |
49 if (dispClass == NULL) { |
51 /* Needed to initialize the Disposer class as it may be not yet referenced */ |
50 /* Needed to initialize the Disposer class as it may be not yet referenced */ |
52 jclass clazz = (*env)->FindClass(env, "sun/java2d/Disposer"); |
51 jclass clazz = (*env)->FindClass(env, "sun/java2d/Disposer"); |
|
52 if ((*env)->ExceptionCheck(env)) { |
|
53 // If there's exception pending, we'll just return. |
|
54 return; |
|
55 } |
53 } |
56 } |
54 |
57 |
55 (*env)->CallStaticVoidMethod(env, dispClass, addRecordMID, |
58 (*env)->CallStaticVoidMethod(env, dispClass, addRecordMID, |
56 obj, ptr_to_jlong(disposer), pData); |
59 obj, ptr_to_jlong(disposer), pData); |
57 } |
60 } |