--- old/src/macosx/native/sun/awt/CGraphicsDevice.m 2013-05-13 18:47:09.645863500 +0400 +++ new/src/macosx/native/sun/awt/CGraphicsDevice.m 2013-05-13 18:47:09.454852600 +0400 @@ -276,3 +276,34 @@ return jreturnArray; } + +/* + * Class: sun_awt_CGraphicsDevice + * Method: nativeGetScaleFactor + * Signature: (I)D + */ +JNIEXPORT jdouble JNICALL +Java_sun_awt_CGraphicsDevice_nativeGetScaleFactor +(JNIEnv *env, jclass class, jint displayID) +{ + __block jdouble ret = 1.0f; + +JNF_COCOA_ENTER(env); + + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ + NSArray *screens = [NSScreen screens]; + for (NSScreen *screen in screens) { + NSDictionary *screenInfo = [screen deviceDescription]; + NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"]; + if ([screenID pointerValue] == displayID){ + if ([screen respondsToSelector:@selector(backingScaleFactor)]) { + ret = [screen backingScaleFactor]; + } + break; + } + } + }]; + +JNF_COCOA_EXIT(env); + return ret; +}