22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 #import <Cocoa/Cocoa.h>
27 #import <JavaNativeFoundation/JavaNativeFoundation.h>
28
29 #import "sun_lwawt_macosx_CFRetainedResource.h"
30
31
32 /*
33 * Class: sun_lwawt_macosx_CFRetainedResource
34 * Method: nativeCFRelease
35 * Signature: (JZ)V
36 */
37 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease
38 (JNIEnv *env, jclass clazz, jlong ptr, jboolean releaseOnAppKitThread)
39 {
40 if (releaseOnAppKitThread) {
41 // Releasing resources on the main AppKit message loop only
42 // Releasing resources on the nested loops may cause dangling
43 // pointers after the nested loop is exited
44 if ([NSApp respondsToSelector:@selector(postRunnableEvent:)]) {
45 [NSApp postRunnableEvent:^() {
46 CFRelease(jlong_to_ptr(ptr));
47 }];
48 } else {
49 // could happen if we are embedded inside SWT/FX application,
50 [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
51 CFRelease(jlong_to_ptr(ptr));
52 }];
53 }
54 } else {
55
56 JNF_COCOA_ENTER(env);
57
58 CFRelease(jlong_to_ptr(ptr));
59
60 JNF_COCOA_EXIT(env);
61
62 }
|
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 #import <Cocoa/Cocoa.h>
27 #import <JavaNativeFoundation/JavaNativeFoundation.h>
28
29 #import "sun_lwawt_macosx_CFRetainedResource.h"
30
31
32 /*
33 * Class: sun_lwawt_macosx_CFRetainedResource
34 * Method: nativeCFRelease
35 * Signature: (JZ)V
36 */
37 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease
38 (JNIEnv *env, jclass clazz, jlong ptr, jboolean releaseOnAppKitThread)
39 {
40 if (releaseOnAppKitThread) {
41 // Releasing resources on the main AppKit message loop only
42 // Releasing resources on the nested loops may cause dangling
43 // pointers after the nested loop is exited
44 if ([NSApp respondsToSelector:@selector(postRunnableEvent:)]) {
45 [NSApp postRunnableEvent:^() {
46 CFRelease(jlong_to_ptr(ptr));
47 }];
48 } else {
49 // could happen if we are embedded inside SWT/FX application,
50 [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
51 CFRelease(jlong_to_ptr(ptr));
52 }];
53 }
54 } else {
55
56 JNF_COCOA_ENTER(env);
57
58 CFRelease(jlong_to_ptr(ptr));
59
60 JNF_COCOA_EXIT(env);
61
62 }
|