src/macosx/native/sun/awt/CDropTargetContextPeer.m

Print this page




  44 static CDropTarget* GetCDropTarget(jlong jdroptarget) {
  45     CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget);
  46 
  47     // Make sure the drop target is of the right kind:
  48     if ([dropTarget isKindOfClass:[CDropTarget class]]) {
  49         return dropTarget;
  50     }
  51 
  52     return nil;
  53 }
  54 
  55 
  56 /*
  57  * Class:     sun_lwawt_macosx_CDropTargetContextPeer
  58  * Method:    startTransfer
  59  * Signature: (JJ)J
  60  */
  61 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_startTransfer
  62   (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jformat)
  63 {
  64     AWT_ASSERT_NOT_APPKIT_THREAD;
  65 
  66     jlong result = (jlong) 0L;
  67 
  68     // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat]
  69     // works off a data copy and doesn't have to go to the native event thread to get the data.
  70     // We can have endTransfer just call startTransfer.
  71 
  72 JNF_COCOA_ENTER(env);
  73     // Get the drop target native object:
  74     CDropTarget* dropTarget = GetCDropTarget(jdroptarget);
  75     if (dropTarget == nil) {
  76         DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget);
  77         TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
  78         return result;
  79     }
  80 
  81     JNF_MEMBER_CACHE(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V");
  82     if ((*env)->ExceptionOccurred(env) || !newDataMethod) {
  83         DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget);
  84         TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);




  44 static CDropTarget* GetCDropTarget(jlong jdroptarget) {
  45     CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget);
  46 
  47     // Make sure the drop target is of the right kind:
  48     if ([dropTarget isKindOfClass:[CDropTarget class]]) {
  49         return dropTarget;
  50     }
  51 
  52     return nil;
  53 }
  54 
  55 
  56 /*
  57  * Class:     sun_lwawt_macosx_CDropTargetContextPeer
  58  * Method:    startTransfer
  59  * Signature: (JJ)J
  60  */
  61 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_startTransfer
  62   (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jformat)
  63 {

  64 
  65     jlong result = (jlong) 0L;
  66 
  67     // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat]
  68     // works off a data copy and doesn't have to go to the native event thread to get the data.
  69     // We can have endTransfer just call startTransfer.
  70 
  71 JNF_COCOA_ENTER(env);
  72     // Get the drop target native object:
  73     CDropTarget* dropTarget = GetCDropTarget(jdroptarget);
  74     if (dropTarget == nil) {
  75         DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget);
  76         TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
  77         return result;
  78     }
  79 
  80     JNF_MEMBER_CACHE(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V");
  81     if ((*env)->ExceptionOccurred(env) || !newDataMethod) {
  82         DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget);
  83         TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);