diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassAccessible.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassAccessible.m index c5317fc188..641e9fc8fd 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassAccessible.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassAccessible.m @@ -387,6 +387,7 @@ id variantToID(JNIEnv *env, jobject variant) { NSString *valuesSignature = [NSString stringWithFormat: @"()[Lcom/sun/glass/ui/mac/MacAccessible$%@;", enumName]; jclass jEnumClass = (*env)->FindClass(env, [className UTF8String]); + if ((*env)->ExceptionCheck(env)) return FALSE; if (jEnumClass == NULL) return FALSE; jmethodID jValues = (*env)->GetStaticMethodID(env, jEnumClass, "values", [valuesSignature UTF8String]); if ((*env)->ExceptionCheck(env)) return FALSE; @@ -405,6 +406,7 @@ id variantToID(JNIEnv *env, jobject variant) { NSString *customNamePrefix = @"AX"; while (i < length) { jobject value = (*env)->GetObjectArrayElement(env, values, i++); + if ((*env)->ExceptionCheck(env)) return FALSE; jstring name = (jstring)(*env)->CallObjectMethod(env, value, jToString); if ((*env)->ExceptionCheck(env)) return FALSE; NSString* nsName = jStringToNSString(env, name); @@ -529,6 +531,7 @@ id variantToID(JNIEnv *env, jobject variant) { (JNIEnv *env, jclass jClass, jlong id, jint type) { jobject jVariant = (*env)->NewObject(env, jVariantClass, jVariantInit); + if ((*env)->ExceptionCheck(env)) return NULL; if (jVariant == NULL) return NULL; (*env)->SetIntField(env, jVariant, jVariantType, type); diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m index d85dfcc348..504cc7a248 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassApplication.m @@ -484,6 +484,7 @@ - (void)runLoop:(id)selector else { jmethodID setEventThreadMID = (*jEnv)->GetMethodID(jEnv, cls, "setEventThread", "()V"); + GLASS_CHECK_EXCEPTION(jEnv); if (!setEventThreadMID) { NSLog(@"ERROR: can't get MacApplication.setEventThread() method ID"); @@ -506,6 +507,7 @@ - (void)runLoop:(id)selector if (appName) { // make the name available to Java side, before Launchable.fnishLaunching callback jstring jname = (*jEnv)->NewStringUTF(jEnv, [appName UTF8String]); + GLASS_CHECK_EXCEPTION(jEnv); jmethodID setNameMethod = (*jEnv)->GetMethodID(jEnv, cls, "setName", "(Ljava/lang/String;)V"); GLASS_CHECK_EXCEPTION(jEnv); if (setNameMethod != NULL) { @@ -615,6 +617,7 @@ - (void)runLoop:(id)selector if (BooleanClass != 0) { jmethodID getBooleanMethod = (*jEnv)->GetStaticMethodID(jEnv, BooleanClass, "getBoolean", "(Ljava/lang/String;)Z"); + GLASS_CHECK_EXCEPTION(jEnv); if (getBooleanMethod != 0) { jstring flag = (*jEnv)->NewStringUTF(jEnv, "glassload.verbose"); @@ -739,6 +742,7 @@ + (void)leaveFullScreenExitingLoopIfNeeded GET_MAIN_JENV; (*env)->CallStaticVoidMethod(env, jApplicationClass, javaIDs.Application.leaveNestedEventLoop, (jobject)NULL); + GLASS_CHECK_EXCEPTION(env); } + (void)registerKeyEvent:(NSEvent*)event @@ -800,6 +804,7 @@ + (BOOL)syncRenderingDisabled { NSLog(@"ERROR: macOS version is %d.%d, which is below the minimum of %d.%d", (int)osVerMajor, (int)osVerMinor, MACOS_MIN_VERSION_MAJOR, MACOS_MIN_VERSION_MINOR); jclass exceptionClass = (*env)->FindClass(env, "java/lang/RuntimeException"); + GLASS_CHECK_EXCEPTION(env); if (exceptionClass != 0) { (*env)->ThrowNew(env, exceptionClass, "Unsupported macOS version"); } diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassCursor.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassCursor.m index 4cdb3934b5..a3cc3e2226 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassCursor.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassCursor.m @@ -84,6 +84,7 @@ + (NSCursor*)performJavaSelector:(SEL)aSelector return; } jSizeInit = (*env)->GetMethodID(env, cls, "", "(II)V"); + GLASS_CHECK_EXCEPTION(env); } NSString *base = @"/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Resources/cursors"; @@ -149,6 +150,7 @@ + (NSCursor*)performJavaSelector:(SEL)aSelector { NSImage *image = NULL; (*env)->CallVoidMethod(env, jPixels, jPixelsAttachData, ptr_to_jlong(&image)); + GLASS_CHECK_EXCEPTION(env); if (image != NULL) { NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(x, y)]; diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassDialogs.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassDialogs.m index dc8dbbb525..e09f3a79c1 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassDialogs.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassDialogs.m @@ -129,17 +129,21 @@ - (void)applyExtensions:(jobjectArray)jExtensionFilters withDefaultIndex:(jint)i for (int i = 0; i < itemCount; i++) { jobject jFilter = (*env)->GetObjectArrayElement(env, jExtensionFilters, i); + GLASS_CHECK_EXCEPTION(env); jstring jDescription = (*env)->CallObjectMethod(env, jFilter, javaIDs.ExtensionFilter.getDescription); + GLASS_CHECK_EXCEPTION(env); [filterNames addObject:[GlassHelper nsStringWithJavaString:jDescription withEnv:env]]; jobjectArray jExtensions = (jobjectArray)(*env)->CallObjectMethod(env, jFilter, javaIDs.ExtensionFilter.extensionsToArray); + GLASS_CHECK_EXCEPTION(env); NSUInteger extensionCount = (NSUInteger)(*env)->GetArrayLength(env, jExtensions); NSMutableArray* extensions = [NSMutableArray arrayWithCapacity:extensionCount]; for (int j = 0; j < extensionCount; j++) { NSString* extension = [GlassHelper nsStringWithJavaString:(*env)->GetObjectArrayElement(env, jExtensions, j) withEnv:env]; + GLASS_CHECK_EXCEPTION(env); [extensions addObject:[extension pathExtension]]; } [filters addObject:extensions]; @@ -192,6 +196,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url) #endif // VERBOSE NSData *data = [[url path] dataUsingEncoding:NSUTF16LittleEndianStringEncoding]; jstring path = (*env)->NewString(env, (jchar *)[data bytes], data.length/2); + GLASS_CHECK_EXCEPTION(env); jobject ret = NULL; diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassHelper.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassHelper.m index 353a852d30..4173eeb4e6 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassHelper.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassHelper.m @@ -77,6 +77,7 @@ + (jclass)ClassForName:(char*)className withEnv:(JNIEnv*)env } jstring classNameStr = (*env)->NewStringUTF(env, className); + if ((*env)->ExceptionCheck(env)) return NULL; if (classNameStr == NULL) { NSLog(@"GlassHelper error: classNameStrs == NULL"); diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m index f34e89c2c9..31db1c856b 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m @@ -455,12 +455,15 @@ jcharArray GetJavaKeyChars(JNIEnv *env, NSEvent *event) if (needChars == NO) { // Return an empty array instead of NULL - return (*env)->NewCharArray(env, 0); + jcharArray jcArr = (*env)->NewCharArray(env, 0); + GLASS_CHECK_EXCEPTION(env); + return jcArr; } jchar jc[16]; [chars getCharacters:jc range:NSMakeRange(0, [chars length])]; jcharArray jChars = (*env)->NewCharArray(env, (jsize)[chars length]); + GLASS_CHECK_EXCEPTION(env); (*env)->SetCharArrayRegion(env, jChars, 0, (jsize)[chars length], jc); GLASS_CHECK_EXCEPTION(env); return jChars; diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassMacros.h b/modules/javafx.graphics/src/main/native-glass/mac/GlassMacros.h index 9c8761430a..26b3c62a9e 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassMacros.h +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassMacros.h @@ -166,6 +166,7 @@ do { if ((pthread_main_np() == 0) && (jEnv == NULL)) { \ GLASS_CHECK_EXCEPTION(env); \ jclass newExcCls = (*env)->FindClass(env, "java/lang/RuntimeException"); \ + GLASS_CHECK_EXCEPTION(env); \ if (newExcCls != 0) { \ (*env)->ThrowNew(env, newExcCls, "Main Java thread is detached."); \ } \ diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassMenu.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassMenu.m index 909a399f5d..827cc9b10a 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassMenu.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassMenu.m @@ -170,6 +170,7 @@ - (void)action:(id)sender if (env != NULL) { (*env)->CallVoidMethod(env, self->jCallback, jMenuActionMethod, NULL); + GLASS_CHECK_EXCEPTION(env); } } } @@ -182,7 +183,9 @@ - (void)menuWillOpen: (NSMenu *)menu if (env != NULL) { jobject jmenu = (*env)->GetObjectField(env, jDelegate, jDelegateMenuField); + GLASS_CHECK_EXCEPTION(env); (*env)->CallVoidMethod(env, jmenu, jMenuOpeningMethod, NULL); + GLASS_CHECK_EXCEPTION(env); } } @@ -192,7 +195,9 @@ - (void)menuDidClose: (NSMenu *)menu if (env != NULL) { jobject jmenu = (*env)->GetObjectField(env, jDelegate, jDelegateMenuField); + GLASS_CHECK_EXCEPTION(env); (*env)->CallVoidMethod(env, jmenu, jMenuClosedMethod, NULL); + GLASS_CHECK_EXCEPTION(env); } } @@ -206,6 +211,7 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { GlassMenu *glassTargetItem = (GlassMenu *)[menuItem target]; (*env)->CallVoidMethod(env, self->jCallback, jMenuValidateMethod, NULL); + GLASS_CHECK_EXCEPTION(env); return ([glassTargetItem->item isEnabled]); } @@ -264,6 +270,7 @@ - (void)_setPixels:(jobject)pixels pixels = (*env)->NewGlobalRef(env, pixels); NSImage *image = NULL; (*env)->CallVoidMethod(env, pixels, jPixelsAttachData, ptr_to_jlong(&image)); + GLASS_CHECK_EXCEPTION(env); if (image != NULL) { if (jPixelsWidthField diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassPasteboard.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassPasteboard.m index 4e4fd11c1f..991808e316 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassPasteboard.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassPasteboard.m @@ -249,6 +249,7 @@ static inline void SetNSPasteboardItemValueForUtf(JNIEnv *env, NSPasteboardItem NSString *string = nil; { const jchar *chars = (*env)->GetStringChars(env, jValue, NULL); + GLASS_CHECK_EXCEPTION(env); // 'string' must never be nil string = [NSString stringWithCharacters:(UniChar *)chars length:(NSUInteger)(*env)->GetStringLength(env, jValue)]; (*env)->ReleaseStringChars(env, jValue, chars); @@ -265,6 +266,7 @@ static inline void SetNSPasteboardItemValueForUtf(JNIEnv *env, NSPasteboardItem { NSImage *image = NULL; (*env)->CallVoidMethod(env, jValue, jPixelsAttachData, ptr_to_jlong(&image)); + GLASS_CHECK_EXCEPTION(env); if (image != NULL) { NSData *data = [image TIFFRepresentation]; @@ -276,6 +278,7 @@ static inline void SetNSPasteboardItemValueForUtf(JNIEnv *env, NSPasteboardItem { NSPoint offset = NSZeroPoint; jbyte *array = (*env)->GetByteArrayElements(env, jValue, 0); + GLASS_CHECK_EXCEPTION(env); if (array != nil) { if (sizeof(array) == sizeof(jint) * 2) { jint x = CFSwapInt32BigToHost(((jint *)array)[0]); @@ -292,6 +295,7 @@ static inline void SetNSPasteboardItemValueForUtf(JNIEnv *env, NSPasteboardItem NSData *data = nil; { jbyte *bytes = (*env)->GetByteArrayElements(env, jValue, NULL); + GLASS_CHECK_EXCEPTION(env); // 'data' must never be nil data = [NSData dataWithBytes:bytes length:(NSUInteger)(*env)->GetArrayLength(env, jValue)]; (*env)->ReleaseByteArrayElements(env, jValue, bytes, 0); @@ -308,20 +312,25 @@ static inline void SetNSPasteboardItemValueForUtf(JNIEnv *env, NSPasteboardItem NSPasteboardItem *item = [[[NSPasteboardItem alloc] init] autorelease]; { jsize repsCount = (*env)->GetArrayLength(env, jArray); + GLASS_CHECK_EXCEPTION(env); //NSLog(@" NSPasteboardItemFromArray repsCount: %d", repsCount); if (repsCount > 0) { for (int i=0; iGetObjectArrayElement(env, jArray, i); + GLASS_CHECK_EXCEPTION(env); if ((*env)->GetArrayLength(env, jRepresentation) == 2) { jstring jUtf = (*env)->GetObjectArrayElement(env, jRepresentation, com_sun_glass_ui_mac_MacPasteboard_UtfIndex); + GLASS_CHECK_EXCEPTION(env); jobject jObject = (*env)->GetObjectArrayElement(env, jRepresentation, com_sun_glass_ui_mac_MacPasteboard_ObjectIndex); + GLASS_CHECK_EXCEPTION(env); NSString *utf = nil; { const jchar *chars = (*env)->GetStringChars(env, jUtf, NULL); + GLASS_CHECK_EXCEPTION(env); jsize length = (*env)->GetStringLength(env, jUtf); if (length > 0) { @@ -447,6 +456,7 @@ static inline jobject createUTF(JNIEnv *env, NSString *data) { NSString *name = nil; { const jchar *chars = (*env)->GetStringChars(env, jName, NULL); + GLASS_CHECK_EXCEPTION(env); jsize length = (*env)->GetStringLength(env, jName); if (length > 0) { @@ -668,6 +678,7 @@ static inline jobject createUTF(JNIEnv *env, NSString *data) { NSString *utf = nil; { const jchar *chars = (*env)->GetStringChars(env, jUtf, NULL); + GLASS_CHECK_EXCEPTION(env); jsize length = (*env)->GetStringLength(env, jUtf); if (length > 0) { diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassRobot.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassRobot.m index f3747434c2..e6a3ed1190 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassRobot.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassRobot.m @@ -466,9 +466,11 @@ - (void)mouseRelease:(UInt32)buttons pixHeight = height; } jintArray pixelArray = (*env)->NewIntArray(env, (jsize)pixWidth * pixHeight); + GLASS_CHECK_EXCEPTION(env); if (pixelArray) { jint *javaPixels = (jint*)(*env)->GetIntArrayElements(env, pixelArray, 0); + GLASS_CHECK_EXCEPTION(env); if (javaPixels != NULL) { // create a graphics context around the Java int array diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassTimer.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassTimer.m index 4b806f2b1e..9ee23b124f 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassTimer.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassTimer.m @@ -134,6 +134,7 @@ CVReturn CVOutputCallback(CVDisplayLinkRef displayLink, if (timer->_runnable != NULL) { (*timer->_env)->CallVoidMethod(timer->_env, timer->_runnable, jRunnableRun); + GLASS_CHECK_EXCEPTION(timer->_env); } if (timer->_paused == YES) diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassView3D.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassView3D.m index c513c695ef..b528a90832 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassView3D.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassView3D.m @@ -146,6 +146,7 @@ - (void)_initialize3dWithJproperties:(jobject)jproperties if (jproperties != NULL) { jobject sharedContextPtrKey = (*env)->NewStringUTF(env, "shareContextPtr"); + GLASS_CHECK_EXCEPTION(env); jobject sharedContextPtrValue = (*env)->CallObjectMethod(env, jproperties, jMapGetMethod, sharedContextPtrKey); GLASS_CHECK_EXCEPTION(env); if (sharedContextPtrValue != NULL) @@ -166,6 +167,7 @@ - (void)_initialize3dWithJproperties:(jobject)jproperties if (jproperties != NULL) { jobject contextPtrKey = (*env)->NewStringUTF(env, "contextPtr"); + GLASS_CHECK_EXCEPTION(env); jobject contextPtrValue = (*env)->CallObjectMethod(env, jproperties, jMapGetMethod, contextPtrKey); GLASS_CHECK_EXCEPTION(env); if (contextPtrValue != NULL) @@ -489,12 +491,15 @@ - (BOOL)performKeyEquivalent:(NSEvent *)theEvent (*env)->CallVoidMethod(env, self->_delegate->jView, jViewNotifyKey, com_sun_glass_events_KeyEvent_PRESS, uch, jKeyChars, jModifiers); + GLASS_CHECK_EXCEPTION(env); (*env)->CallVoidMethod(env, self->_delegate->jView, jViewNotifyKey, com_sun_glass_events_KeyEvent_TYPED, uch, jKeyChars, jModifiers); + GLASS_CHECK_EXCEPTION(env); (*env)->CallVoidMethod(env, self->_delegate->jView, jViewNotifyKey, com_sun_glass_events_KeyEvent_RELEASE, uch, jKeyChars, jModifiers); + GLASS_CHECK_EXCEPTION(env); (*env)->DeleteLocalRef(env, jKeyChars); GLASS_CHECK_EXCEPTION(env); diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassViewDelegate.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassViewDelegate.m index df61646704..5a60606dfe 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassViewDelegate.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassViewDelegate.m @@ -236,6 +236,7 @@ - (void)viewDidMoveToWindow [[self->nsView window] setAcceptsMouseMovedEvents:YES]; (*env)->CallVoidMethod(env, self->jView, jViewNotifyEvent, com_sun_glass_events_ViewEvent_ADD); + GLASS_CHECK_EXCEPTION(env); } else { @@ -718,15 +719,17 @@ - (void)sendJavaKeyEvent:(NSEvent *)theEvent isDown:(BOOL)isDown } #define SEND_MODIFIER_KEY_EVENT_WITH_TYPE(type, vkCode) \ + do { \ (*env)->CallVoidMethod(env, self->jView, jViewNotifyKey, \ (type), \ (vkCode), \ - jKeyChars, jModifiers); + jKeyChars, jModifiers); \ + GLASS_CHECK_EXCEPTION(env); \ + } while (0) #define SEND_MODIFIER_KEY_EVENT(mask, vkCode) \ if (changedFlags & (mask)) { \ SEND_MODIFIER_KEY_EVENT_WITH_TYPE(currentFlags & (mask) ? com_sun_glass_events_KeyEvent_PRESS : com_sun_glass_events_KeyEvent_RELEASE, vkCode); \ - GLASS_CHECK_EXCEPTION(env); \ } - (void)sendJavaModifierKeyEvent:(NSEvent *)theEvent @@ -738,6 +741,7 @@ - (void)sendJavaModifierKeyEvent:(NSEvent *)theEvent GET_MAIN_JENV; jcharArray jKeyChars = (*env)->NewCharArray(env, 0); + GLASS_CHECK_EXCEPTION(env); SEND_MODIFIER_KEY_EVENT(NSShiftKeyMask, com_sun_glass_events_KeyEvent_VK_SHIFT); SEND_MODIFIER_KEY_EVENT(NSControlKeyMask, com_sun_glass_events_KeyEvent_VK_CONTROL); @@ -943,6 +947,7 @@ - (NSDragOperation)sendJavaDndEvent:(id )info type:(jint)type mask = com_sun_glass_ui_Clipboard_ACTION_NONE; break; } + GLASS_CHECK_EXCEPTION(env); [GlassDragSource setMask:mask]; GLASS_CHECK_EXCEPTION(env); @@ -1135,6 +1140,7 @@ static jstring convertNSStringToJString(id aString, int length) if (dataBytes != NULL) { [data getBytes:dataBytes length:length * 2]; jStr = (*env)->NewString(env, dataBytes, length); + GLASS_CHECK_EXCEPTION(env); free(dataBytes); } } else { @@ -1186,6 +1192,7 @@ - (NSRect)getInputMethodCandidatePosRequest:(int)pos if (n == 2) { jboolean isCopy; jdouble *elems = (*env)->GetDoubleArrayElements(env, theArray, &isCopy); + GLASS_CHECK_EXCEPTION(env); retVal = NSMakeRect((CGFloat)elems[0], (CGFloat)elems[1], 0, 0); (*env)->ReleaseDoubleArrayElements(env, theArray, elems, 0); (*env)->DeleteLocalRef(env, theArray); diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Java.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Java.m index 22d2e25a45..5d0bd363dc 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Java.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Java.m @@ -66,6 +66,7 @@ - (void)_sendJavaWindowMoveToAnotherScreenEventIfNeeded GET_MAIN_JENV; (*env)->CallVoidMethod(env, jWindow, jWindowNotifyMoveToAnotherScreen, createJavaScreen(env, newScreen)); + GLASS_CHECK_EXCEPTION(env); } } @@ -73,6 +74,7 @@ - (void)_sendJavaWindowNotifyScaleChanged:(CGFloat)newScale { GET_MAIN_JENV; (*env)->CallVoidMethod(env, jWindow, jWindowNotifyScaleChanged, 1.0f, 1.0f, newScale, newScale); + GLASS_CHECK_EXCEPTION(env); } - (void)_sendJavaWindowMoveEventForFrame:(NSRect)frame @@ -85,6 +87,7 @@ - (void)_sendJavaWindowMoveEventForFrame:(NSRect)frame (*env)->CallVoidMethod(env, jWindow, jWindowNotifyMove, (int)frame.origin.x, (int)frame.origin.y, [self->nsWindow isZoomed]); + GLASS_CHECK_EXCEPTION(env); [self _sendJavaWindowMoveToAnotherScreenEventIfNeeded]; } } @@ -103,6 +106,7 @@ - (void)_sendJavaWindowResizeEvent:(int)type forFrame:(NSRect)frame (*env)->CallVoidMethod(env, jWindow, jWindowNotifyResize, type, (int)frame.size.width, (int)frame.size.height); + GLASS_CHECK_EXCEPTION(env); [self _sendJavaWindowMoveToAnotherScreenEventIfNeeded]; } } @@ -175,6 +179,7 @@ - (void)_ungrabFocus GET_MAIN_JENV; (*env)->CallVoidMethod(env, self->jWindow, jWindowNotifyFocusUngrab); + GLASS_CHECK_EXCEPTION(env); s_grabWindow = nil; } diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Overrides.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Overrides.m index 60288b6be3..7f1dceb6a2 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Overrides.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassWindow+Overrides.m @@ -72,10 +72,12 @@ - (void)windowDidBecomeKey:(NSNotification *)notification { NSBeep(); (*env)->CallVoidMethod(env, self->jWindow, jWindowNotifyFocusDisabled); + GLASS_CHECK_EXCEPTION(env); return; } (*env)->CallVoidMethod(env, self->jWindow, jWindowNotifyFocus, com_sun_glass_events_WindowEvent_FOCUS_GAINED); + GLASS_CHECK_EXCEPTION(env); if (self->menubar != nil) { @@ -95,6 +97,7 @@ - (void)windowDidResignKey:(NSNotification *)notification GET_MAIN_JENV; (*env)->CallVoidMethod(env, self->jWindow, jWindowNotifyFocus, com_sun_glass_events_WindowEvent_FOCUS_LOST); + GLASS_CHECK_EXCEPTION(env); } - (void)windowWillClose:(NSNotification *)notification @@ -118,6 +121,7 @@ - (void)windowWillClose:(NSNotification *)notification JNIEnv *env = jEnv; if (env != NULL) { (*env)->CallVoidMethod(env, self->jWindow, jWindowNotifyDestroy); + GLASS_CHECK_EXCEPTION(env); } } @@ -191,6 +195,7 @@ - (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame } (*env)->CallVoidMethod(env, jWindow, jWindowNotifyResize, com_sun_glass_events_WindowEvent_MAXIMIZE, (int)newFrame.size.width, (int)newFrame.size.height); + GLASS_CHECK_EXCEPTION(env); return YES; } @@ -233,6 +238,7 @@ - (BOOL)windowShouldClose:(NSNotification *)notification { GET_MAIN_JENV; (*env)->CallVoidMethod(env, jWindow, jWindowNotifyClose); + GLASS_CHECK_EXCEPTION(env); } // it's up to app to decide if the window should be closed