< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/CCursorManager.m

Print this page
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion

*** 24,34 **** */ #include "sun_lwawt_macosx_CCursorManager.h" #include <Cocoa/Cocoa.h> - #include <JavaNativeFoundation/JavaNativeFoundation.h> #include "GeomUtilities.h" #include "ThreadUtilities.h" #include "java_awt_Cursor.h" --- 24,33 ----
*** 71,142 **** JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetBuiltInCursor (JNIEnv *env, jclass class, jint type, jstring name) { ! JNF_COCOA_ENTER(env); ! NSString *cursorName = JNFJavaToNSString(env, name); SEL cursorSelector = (type == sun_lwawt_macosx_CCursorManager_NAMED_CURSOR) ? lookupCursorSelectorForName(cursorName) : lookupCursorSelectorForType(type); if (cursorSelector == nil) { NSString *reason = [NSString stringWithFormat:@"unimplemented built-in cursor type: %d / %@", type, cursorName]; ! [JNFException raise:env as:kIllegalArgumentException reason:[reason UTF8String]]; } if (![[NSCursor class] respondsToSelector:cursorSelector]) { ! [JNFException raise:env as:kNoSuchMethodException reason:"missing NSCursor selector"]; } [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ setCursorOnAppKitThread([[NSCursor class] performSelector:cursorSelector]); }]; ! JNF_COCOA_EXIT(env); } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetCustomCursor (JNIEnv *env, jclass class, jlong imgPtr, jdouble x, jdouble y) { ! JNF_COCOA_ENTER(env); NSImage *image = (NSImage *)jlong_to_ptr(imgPtr); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:(NSPoint){ x, y }]; setCursorOnAppKitThread(cursor); [cursor release]; }]; ! JNF_COCOA_EXIT(env); } JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeGetCursorPosition (JNIEnv *env, jclass class) { jobject jpt = NULL; ! JNF_COCOA_ENTER(env); CGEventRef event = CGEventCreate(NULL); CGPoint globalPos = CGEventGetLocation(event); CFRelease(event); jpt = NSToJavaPoint(env, globalPos); ! JNF_COCOA_EXIT(env); return jpt; } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetAllowsCursorSetInBackground (JNIEnv *env, jclass class, jboolean allows) { ! JNF_COCOA_ENTER(env); SEL allowsSetInBackground_SEL = @selector(javaSetAllowsCursorSetInBackground:); if ([[NSCursor class] respondsToSelector:allowsSetInBackground_SEL]) { [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSMethodSignature *allowsSetInBackground_sig = --- 70,143 ---- JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetBuiltInCursor (JNIEnv *env, jclass class, jint type, jstring name) { ! JNI_COCOA_ENTER(env); ! NSString *cursorName = JavaStringToNSString(env, name); SEL cursorSelector = (type == sun_lwawt_macosx_CCursorManager_NAMED_CURSOR) ? lookupCursorSelectorForName(cursorName) : lookupCursorSelectorForType(type); if (cursorSelector == nil) { NSString *reason = [NSString stringWithFormat:@"unimplemented built-in cursor type: %d / %@", type, cursorName]; ! JNU_ThrowIllegalArgumentException(env, [reason UTF8String]); ! return; } if (![[NSCursor class] respondsToSelector:cursorSelector]) { ! JNU_ThrowByName(env, "java/lang/NoSuchMethodException", "missing NSCursor selector"); ! return; } [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ setCursorOnAppKitThread([[NSCursor class] performSelector:cursorSelector]); }]; ! JNI_COCOA_EXIT(env); } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetCustomCursor (JNIEnv *env, jclass class, jlong imgPtr, jdouble x, jdouble y) { ! JNI_COCOA_ENTER(env); NSImage *image = (NSImage *)jlong_to_ptr(imgPtr); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:(NSPoint){ x, y }]; setCursorOnAppKitThread(cursor); [cursor release]; }]; ! JNI_COCOA_EXIT(env); } JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeGetCursorPosition (JNIEnv *env, jclass class) { jobject jpt = NULL; ! JNI_COCOA_ENTER(env); CGEventRef event = CGEventCreate(NULL); CGPoint globalPos = CGEventGetLocation(event); CFRelease(event); jpt = NSToJavaPoint(env, globalPos); ! JNI_COCOA_EXIT(env); return jpt; } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetAllowsCursorSetInBackground (JNIEnv *env, jclass class, jboolean allows) { ! JNI_COCOA_ENTER(env); SEL allowsSetInBackground_SEL = @selector(javaSetAllowsCursorSetInBackground:); if ([[NSCursor class] respondsToSelector:allowsSetInBackground_SEL]) { [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSMethodSignature *allowsSetInBackground_sig =
*** 148,155 **** [invocation setArgument:&arg atIndex:2]; [invocation invokeWithTarget:[NSCursor class]]; }]; } ! JNF_COCOA_EXIT(env); } --- 149,156 ---- [invocation setArgument:&arg atIndex:2]; [invocation invokeWithTarget:[NSCursor class]]; }]; } ! JNI_COCOA_EXIT(env); }
< prev index next >