< prev index next >

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

Print this page
rev 54094 : 8257853: Remove dependencies on JNF's JNI utility functions in AWT and 2D code
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54097 : 8259869: [macOS] Remove desktop module dependencies on JNF Reference APIs
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion

*** 23,46 **** * questions. */ #import "sun_lwawt_macosx_CDropTargetContextPeer.h" - #import <JavaNativeFoundation/JavaNativeFoundation.h> - #import "CDataTransferer.h" #import "CDropTarget.h" #import "DnDUtilities.h" #import "ThreadUtilities.h" ! JNF_CLASS_CACHE(jc_CDropTargetContextPeer, "sun/lwawt/macosx/CDropTargetContextPeer"); static void TransferFailed(JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jdroptransfer, jlong jformat) { AWT_ASSERT_NOT_APPKIT_THREAD; ! JNF_MEMBER_CACHE(transferFailedMethod, jc_CDropTargetContextPeer, "transferFailed", "(J)V"); ! JNFCallVoidMethod(env, jthis, transferFailedMethod, jformat); // AWT_THREADING Safe (!appKit) } static CDropTarget* GetCDropTarget(jlong jdroptarget) { CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget); --- 23,52 ---- * questions. */ #import "sun_lwawt_macosx_CDropTargetContextPeer.h" #import "CDataTransferer.h" #import "CDropTarget.h" #import "DnDUtilities.h" #import "ThreadUtilities.h" + #import "JNIUtilities.h" + + jclass jc_CDropTargetContextPeer = NULL; + #define GET_DTCP_CLASS() \ + GET_CLASS(jc_CDropTargetContextPeer, "sun/lwawt/macosx/CDropTargetContextPeer"); ! #define GET_DTCP_CLASS_RETURN(ret) \ ! GET_CLASS_RETURN(jc_CDropTargetContextPeer, "sun/lwawt/macosx/CDropTargetContextPeer", ret); static void TransferFailed(JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jdroptransfer, jlong jformat) { AWT_ASSERT_NOT_APPKIT_THREAD; ! GET_DTCP_CLASS(); ! DECLARE_METHOD(transferFailedMethod, jc_CDropTargetContextPeer, "transferFailed", "(J)V"); ! (*env)->CallVoidMethod(env, jthis, transferFailedMethod, jformat); // AWT_THREADING Safe (!appKit) ! CHECK_EXCEPTION(); } static CDropTarget* GetCDropTarget(jlong jdroptarget) { CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget);
*** 66,85 **** // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat] // works off a data copy and doesn't have to go to the native event thread to get the data. // We can have endTransfer just call startTransfer. ! JNF_COCOA_ENTER(env); // Get the drop target native object: CDropTarget* dropTarget = GetCDropTarget(jdroptarget); if (dropTarget == nil) { DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; } ! JNF_MEMBER_CACHE(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V"); if ((*env)->ExceptionOccurred(env) || !newDataMethod) { DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; } --- 72,92 ---- // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat] // works off a data copy and doesn't have to go to the native event thread to get the data. // We can have endTransfer just call startTransfer. ! JNI_COCOA_ENTER(env); // Get the drop target native object: CDropTarget* dropTarget = GetCDropTarget(jdroptarget); if (dropTarget == nil) { DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; } ! GET_DTCP_CLASS_RETURN(result); ! DECLARE_METHOD_RETURN(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V", result); if ((*env)->ExceptionOccurred(env) || !newDataMethod) { DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; }
*** 92,112 **** return result; } // Pass the data to drop target: @try { ! JNFCallVoidMethod(env, jthis, newDataMethod, jformat, jdropdata); // AWT_THREADING Safe (!appKit) } @catch (NSException *ex) { DLog2(@"[CDropTargetContextPeer startTransfer]: exception in newData() for %d.\n", (NSInteger) jdroptarget); ! JNFDeleteGlobalRef(env, jdropdata); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; } // if no error return dropTarget's draggingSequence result = [dropTarget getDraggingSequenceNumber]; ! JNF_COCOA_EXIT(env); return result; } /* --- 99,119 ---- return result; } // Pass the data to drop target: @try { ! (*env)->CallVoidMethod(env, jthis, newDataMethod, jformat, jdropdata); // AWT_THREADING Safe (!appKit) } @catch (NSException *ex) { DLog2(@"[CDropTargetContextPeer startTransfer]: exception in newData() for %d.\n", (NSInteger) jdroptarget); ! (*env)->DeleteGlobalRef(env, jdropdata); TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat); return result; } // if no error return dropTarget's draggingSequence result = [dropTarget getDraggingSequenceNumber]; ! JNI_COCOA_EXIT(env); return result; } /*
*** 133,150 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_dropDone (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jdroptransfer, jboolean jislocal, jboolean jsuccess, jint jdropaction) { // Get the drop target native object: ! JNF_COCOA_ENTER(env); CDropTarget* dropTarget = GetCDropTarget(jdroptarget); if (dropTarget == nil) { DLog2(@"[CDropTargetContextPeer dropDone]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget); return; } // Notify drop target Java is all done with this dragging sequence: [dropTarget javaDraggingEnded:(jlong)jdroptransfer success:jsuccess action:jdropaction]; ! JNF_COCOA_EXIT(env); return; } --- 140,157 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_dropDone (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jdroptransfer, jboolean jislocal, jboolean jsuccess, jint jdropaction) { // Get the drop target native object: ! JNI_COCOA_ENTER(env); CDropTarget* dropTarget = GetCDropTarget(jdroptarget); if (dropTarget == nil) { DLog2(@"[CDropTargetContextPeer dropDone]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget); return; } // Notify drop target Java is all done with this dragging sequence: [dropTarget javaDraggingEnded:(jlong)jdroptransfer success:jsuccess action:jdropaction]; ! JNI_COCOA_EXIT(env); return; }
< prev index next >