8034035: [parfait] JNI exception pending in jdk/src/macosx/native/sun/awt/LWCToolkit.m
Reviewed-by: serb, azvegint
This commit is contained in:
parent
f37265f360
commit
9d1b732ccb
@ -200,13 +200,17 @@ Java_sun_lwawt_macosx_LWCToolkit_initIDs
|
|||||||
gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS;
|
gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS;
|
||||||
|
|
||||||
jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent");
|
jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent");
|
||||||
|
CHECK_NULL(inputEventClazz);
|
||||||
jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I");
|
jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I");
|
||||||
|
CHECK_NULL(getButtonDownMasksID);
|
||||||
jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID);
|
jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID);
|
||||||
jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE);
|
jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE);
|
||||||
|
CHECK_NULL(tmp);
|
||||||
|
|
||||||
gButtonDownMasks = (jint*)SAFE_SIZE_ARRAY_ALLOC(malloc, sizeof(jint), gNumberOfButtons);
|
gButtonDownMasks = (jint*)SAFE_SIZE_ARRAY_ALLOC(malloc, sizeof(jint), gNumberOfButtons);
|
||||||
if (gButtonDownMasks == NULL) {
|
if (gButtonDownMasks == NULL) {
|
||||||
gNumberOfButtons = 0;
|
gNumberOfButtons = 0;
|
||||||
|
(*env)->ReleaseIntArrayElements(env, obj, tmp, JNI_ABORT);
|
||||||
JNU_ThrowOutOfMemoryError(env, NULL);
|
JNU_ThrowOutOfMemoryError(env, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -240,7 +244,7 @@ static UInt32 RGB(NSColor *c) {
|
|||||||
return ((ia & 0xFF) << 24) | ((ir & 0xFF) << 16) | ((ig & 0xFF) << 8) | ((ib & 0xFF) << 0);
|
return ((ia & 0xFF) << 24) | ((ir & 0xFF) << 16) | ((ig & 0xFF) << 8) | ((ib & 0xFF) << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) {
|
BOOL doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) {
|
||||||
jint len = (*env)->GetArrayLength(env, jColors);
|
jint len = (*env)->GetArrayLength(env, jColors);
|
||||||
|
|
||||||
UInt32 colorsArray[len];
|
UInt32 colorsArray[len];
|
||||||
@ -254,8 +258,12 @@ void doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) {
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
jint *_colors = (*env)->GetPrimitiveArrayCritical(env, jColors, 0);
|
jint *_colors = (*env)->GetPrimitiveArrayCritical(env, jColors, 0);
|
||||||
|
if (_colors == NULL) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
memcpy(_colors, colors, len * sizeof(UInt32));
|
memcpy(_colors, colors, len * sizeof(UInt32));
|
||||||
(*env)->ReleasePrimitiveArrayCritical(env, jColors, _colors, 0);
|
(*env)->ReleasePrimitiveArrayCritical(env, jColors, _colors, 0);
|
||||||
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -267,8 +275,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_loadNativeColors
|
|||||||
(JNIEnv *env, jobject peer, jintArray jSystemColors, jintArray jAppleColors)
|
(JNIEnv *env, jobject peer, jintArray jSystemColors, jintArray jAppleColors)
|
||||||
{
|
{
|
||||||
JNF_COCOA_ENTER(env);
|
JNF_COCOA_ENTER(env);
|
||||||
doLoadNativeColors(env, jSystemColors, NO);
|
if (doLoadNativeColors(env, jSystemColors, NO)) {
|
||||||
doLoadNativeColors(env, jAppleColors, YES);
|
doLoadNativeColors(env, jAppleColors, YES);
|
||||||
|
}
|
||||||
JNF_COCOA_EXIT(env);
|
JNF_COCOA_EXIT(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user