src/macosx/native/sun/awt/CGraphicsDevice.m
Print this page
*** 313,317 ****
--- 313,348 ----
CFRelease(allModes);
JNF_COCOA_EXIT(env);
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;
+ }