diff --git a/modules/javafx.graphics/src/main/native-glass/gtk/glass_screen.cpp b/modules/javafx.graphics/src/main/native-glass/gtk/glass_screen.cpp index 9d180d0db17..cb02cc54e29 100644 --- a/modules/javafx.graphics/src/main/native-glass/gtk/glass_screen.cpp +++ b/modules/javafx.graphics/src/main/native-glass/gtk/glass_screen.cpp @@ -209,10 +209,12 @@ jobjectArray rebuild_screens(JNIEnv* env) { JNI_EXCEPTION_TO_CPP(env) LOG1("Available monitors: %d\n", n_monitors) - int i; - for (i=0; i < n_monitors; i++) { - env->SetObjectArrayElement(jscreens, i, createJavaScreen(env, default_gdk_screen, i)); - JNI_EXCEPTION_TO_CPP(env) + if (jscreens != NULL) { + int i; + for (i=0; i < n_monitors; i++) { + env->SetObjectArrayElement(jscreens, i, createJavaScreen(env, default_gdk_screen, i)); + JNI_EXCEPTION_TO_CPP(env) + } } return jscreens; diff --git a/modules/javafx.graphics/src/main/native-glass/ios/GlassScreen.m b/modules/javafx.graphics/src/main/native-glass/ios/GlassScreen.m index da236c587c6..0a0c83cc4d3 100644 --- a/modules/javafx.graphics/src/main/native-glass/ios/GlassScreen.m +++ b/modules/javafx.graphics/src/main/native-glass/ios/GlassScreen.m @@ -87,9 +87,11 @@ jobjectArray createJavaScreens(JNIEnv* env) { mat_jScreenClass, NULL); - for (NSUInteger index = 0; index < [screens count]; index++) { - jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]); - (*env)->SetObjectArrayElement(env, screenArray, index, javaScreen); + if (screenArray != NULL) { + for (NSUInteger index = 0; index < [screens count]; index++) { + jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]); + (*env)->SetObjectArrayElement(env, screenArray, index, javaScreen); + } } return screenArray; diff --git a/modules/javafx.graphics/src/main/native-glass/mac/GlassScreen.m b/modules/javafx.graphics/src/main/native-glass/mac/GlassScreen.m index 2b68367c317..bea74cb94f1 100644 --- a/modules/javafx.graphics/src/main/native-glass/mac/GlassScreen.m +++ b/modules/javafx.graphics/src/main/native-glass/mac/GlassScreen.m @@ -135,20 +135,22 @@ jobjectArray createJavaScreens(JNIEnv* env) { jScreenClass, NULL); GLASS_CHECK_EXCEPTION(env); - maxScreenDimensions = NSMakeSize(0.f,0.f); - for (NSUInteger index = 0; index < [screens count]; index++) { - NSRect screenRect = [[screens objectAtIndex:index] frame]; + if (screenArray != NULL) { + maxScreenDimensions = NSMakeSize(0.f,0.f); + for (NSUInteger index = 0; index < [screens count]; index++) { + NSRect screenRect = [[screens objectAtIndex:index] frame]; - if (screenRect.size.width > maxScreenDimensions.width) { - maxScreenDimensions.width = screenRect.size.width; - } - if (screenRect.size.height > maxScreenDimensions.height) { - maxScreenDimensions.height = screenRect.size.height; - } + if (screenRect.size.width > maxScreenDimensions.width) { + maxScreenDimensions.width = screenRect.size.width; + } + if (screenRect.size.height > maxScreenDimensions.height) { + maxScreenDimensions.height = screenRect.size.height; + } - jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]); - (*env)->SetObjectArrayElement(env, screenArray, index, javaScreen); - GLASS_CHECK_EXCEPTION(env); + jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]); + (*env)->SetObjectArrayElement(env, screenArray, index, javaScreen); + GLASS_CHECK_EXCEPTION(env); + } } return screenArray; diff --git a/modules/javafx.graphics/src/main/native-glass/win/GlassScreen.cpp b/modules/javafx.graphics/src/main/native-glass/win/GlassScreen.cpp index fb9e0d28820..e236efd8acb 100644 --- a/modules/javafx.graphics/src/main/native-glass/win/GlassScreen.cpp +++ b/modules/javafx.graphics/src/main/native-glass/win/GlassScreen.cpp @@ -603,7 +603,7 @@ jobjectArray GlassScreen::CreateJavaScreens(JNIEnv *env) jclass screenCls = GetScreenCls(env); jobjectArray jScreens = env->NewObjectArray(numMonitors, screenCls, NULL); - if (CheckAndClearException(env)) { + if (CheckAndClearException(env) || jScreens == NULL) { free(g_MonitorInfos.pMonitorInfos); g_MonitorInfos.numInfos = g_MonitorInfos.maxInfos = 0; g_MonitorInfos.pMonitorInfos = NULL;