--- old/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c 2015-11-06 02:13:10.903230898 -0500 +++ new/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c 2015-11-06 02:13:10.751154900 -0500 @@ -2082,3 +2082,38 @@ /** * End DisplayMode/FullScreen support */ + +int getScale(const char *name) { + char *uiScale = getenv(name); + if (uiScale != NULL) { + double scale = strtod(uiScale, NULL); + if (errno == ERANGE || scale < 1) { + return -1; + } + return (int) scale; + } + return -1; +} + +/* + * Class: sun_awt_X11GraphicsDevice + * Method: getNativeScaleFactor + * Signature: (I)I + */ +JNIEXPORT jint JNICALL +Java_sun_awt_X11GraphicsDevice_getNativeScaleFactor + (JNIEnv *env, jobject this, jint screen) { + + // for debug purposes + static int scale = -2.0; + + if (scale == -2) { + scale = getScale("J2D_UISCALE"); + } + + if (scale >= 1) { + return scale; + } + + return getScale("GDK_SCALE"); +}