8035147: [macosx] Drag and Drop tests are failing with -Xchech:jni
Reviewed-by: serb, azvegint
This commit is contained in:
parent
9d1b732ccb
commit
d6399044d7
@ -141,7 +141,7 @@ public final class CDragSourceContextPeer extends SunDragSourceContextPeer {
|
||||
// Create native dragging source:
|
||||
final long nativeDragSource = createNativeDragSource(component, nativeViewPtr, transferable, triggerEvent,
|
||||
(int) (dragOrigin.getX()), (int) (dragOrigin.getY()), extModifiers,
|
||||
clickCount, timestamp, fDragCImage, dragImageOffset.x, dragImageOffset.y,
|
||||
clickCount, timestamp, fDragCImage != null ? fDragCImage.ptr : 0L, dragImageOffset.x, dragImageOffset.y,
|
||||
getDragSourceContext().getSourceActions(), formats, formatMap);
|
||||
|
||||
if (nativeDragSource == 0)
|
||||
@ -484,7 +484,7 @@ public final class CDragSourceContextPeer extends SunDragSourceContextPeer {
|
||||
// Native support:
|
||||
private native long createNativeDragSource(Component component, long nativePeer, Transferable transferable,
|
||||
InputEvent triggerEvent, int dragPosX, int dragPosY, int extModifiers, int clickCount, long timestamp,
|
||||
CImage nsDragImage, int dragImageOffsetX, int dragImageOffsetY,
|
||||
long nsDragImagePtr, int dragImageOffsetX, int dragImageOffsetY,
|
||||
int sourceActions, long[] formats, Map formatMap);
|
||||
|
||||
private native void doDragging(long nativeDragSource);
|
||||
|
@ -70,7 +70,7 @@
|
||||
modifiers:(jint)extModifiers
|
||||
clickCount:(jint)clickCount
|
||||
timeStamp:(jlong)timeStamp
|
||||
dragImage:(jobject)jDragImage
|
||||
dragImage:(jlong)nsDragImagePtr
|
||||
dragImageOffsetX:(jint)jDragImageOffsetX
|
||||
dragImageOffsetY:(jint)jDragImageOffsetY
|
||||
sourceActions:(jint)jSourceActions
|
||||
|
@ -97,7 +97,7 @@ static BOOL sNeedsEnter;
|
||||
modifiers:(jint)extModifiers
|
||||
clickCount:(jint)clickCount
|
||||
timeStamp:(jlong)timeStamp
|
||||
dragImage:(jobject)jDragImage
|
||||
dragImage:(jlong)nsDragImagePtr
|
||||
dragImageOffsetX:(jint)jDragImageOffsetX
|
||||
dragImageOffsetY:(jint)jDragImageOffsetY
|
||||
sourceActions:(jint)jSourceActions
|
||||
@ -112,26 +112,21 @@ static BOOL sNeedsEnter;
|
||||
|
||||
// Construct the object if we have a valid model for it:
|
||||
if (control != nil) {
|
||||
JNIEnv *env = [ThreadUtilities getJNIEnv];
|
||||
fComponent = JNFNewGlobalRef(env, jComponent);
|
||||
fDragSourceContextPeer = JNFNewGlobalRef(env, jDragSourceContextPeer);
|
||||
|
||||
fTransferable = JNFNewGlobalRef(env, jTransferable);
|
||||
fTriggerEvent = JNFNewGlobalRef(env, jTrigger);
|
||||
|
||||
if (jDragImage) {
|
||||
JNF_MEMBER_CACHE(nsImagePtr, CImageClass, "ptr", "J");
|
||||
jlong imgPtr = JNFGetLongField(env, jDragImage, nsImagePtr);
|
||||
fDragImage = (NSImage*) jlong_to_ptr(imgPtr); // Double-casting prevents compiler 'd$|//
|
||||
fComponent = jComponent;
|
||||
fDragSourceContextPeer = jDragSourceContextPeer;
|
||||
fTransferable = jTransferable;
|
||||
fTriggerEvent = jTrigger;
|
||||
|
||||
if (nsDragImagePtr) {
|
||||
fDragImage = (NSImage*) jlong_to_ptr(nsDragImagePtr);
|
||||
[fDragImage retain];
|
||||
}
|
||||
|
||||
fDragImageOffset = NSMakePoint(jDragImageOffsetX, jDragImageOffsetY);
|
||||
|
||||
fSourceActions = jSourceActions;
|
||||
fFormats = JNFNewGlobalRef(env, jFormats);
|
||||
fFormatMap = JNFNewGlobalRef(env, jFormatMap);
|
||||
fFormats = jFormats;
|
||||
fFormatMap = jFormatMap;
|
||||
|
||||
fTriggerEventTimeStamp = timeStamp;
|
||||
fDragPos = NSMakePoint(dragPosX, dragPosY);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -40,30 +40,39 @@
|
||||
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDragSourceContextPeer_createNativeDragSource
|
||||
(JNIEnv *env, jobject jthis, jobject jcomponent, jlong jnativepeer, jobject jtransferable,
|
||||
jobject jtrigger, jint jdragposx, jint jdragposy, jint jextmodifiers, jint jclickcount, jlong jtimestamp,
|
||||
jobject jnsdragimage, jint jdragimageoffsetx, jint jdragimageoffsety,
|
||||
jlong nsdragimageptr, jint jdragimageoffsetx, jint jdragimageoffsety,
|
||||
jint jsourceactions, jlongArray jformats, jobject jformatmap)
|
||||
{
|
||||
id controlObj = (id) jlong_to_ptr(jnativepeer);
|
||||
__block CDragSource* dragSource = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
// Global references are disposed when the DragSource is removed
|
||||
jobject gComponent = JNFNewGlobalRef(env, jcomponent);
|
||||
jobject gDragSourceContextPeer = JNFNewGlobalRef(env, jthis);
|
||||
jobject gTransferable = JNFNewGlobalRef(env, jtransferable);
|
||||
jobject gTriggerEvent = JNFNewGlobalRef(env, jtrigger);
|
||||
jlongArray gFormats = JNFNewGlobalRef(env, jformats);
|
||||
jobject gFormatMap = JNFNewGlobalRef(env, jformatmap);
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
dragSource = [[CDragSource alloc] init:jthis
|
||||
component:jcomponent
|
||||
dragSource = [[CDragSource alloc] init:gDragSourceContextPeer
|
||||
component:gComponent
|
||||
control:controlObj
|
||||
transferable:jtransferable
|
||||
triggerEvent:jtrigger
|
||||
transferable:gTransferable
|
||||
triggerEvent:gTriggerEvent
|
||||
dragPosX:jdragposx
|
||||
dragPosY:jdragposy
|
||||
modifiers:jextmodifiers
|
||||
clickCount:jclickcount
|
||||
timeStamp:jtimestamp
|
||||
dragImage:jnsdragimage
|
||||
dragImage:nsdragimageptr
|
||||
dragImageOffsetX:jdragimageoffsetx
|
||||
dragImageOffsetY:jdragimageoffsety
|
||||
sourceActions:jsourceactions
|
||||
formats:jformats
|
||||
formatMap:jformatmap];
|
||||
formats:gFormats
|
||||
formatMap:gFormatMap];
|
||||
}];
|
||||
JNF_COCOA_EXIT(env);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user