298 299 CFIndex n; 300 for (n=0; n < numModes; n++) { 301 CGDisplayModeRef cRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(allModes, n); 302 if (cRef != NULL) { 303 jobject oneMode = createJavaDisplayMode(cRef, env, displayID); 304 (*env)->SetObjectArrayElement(env, jreturnArray, n, oneMode); 305 if ((*env)->ExceptionOccurred(env)) { 306 (*env)->ExceptionDescribe(env); 307 (*env)->ExceptionClear(env); 308 continue; 309 } 310 (*env)->DeleteLocalRef(env, oneMode); 311 } 312 } 313 CFRelease(allModes); 314 JNF_COCOA_EXIT(env); 315 316 return jreturnArray; 317 } | 298 299 CFIndex n; 300 for (n=0; n < numModes; n++) { 301 CGDisplayModeRef cRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(allModes, n); 302 if (cRef != NULL) { 303 jobject oneMode = createJavaDisplayMode(cRef, env, displayID); 304 (*env)->SetObjectArrayElement(env, jreturnArray, n, oneMode); 305 if ((*env)->ExceptionOccurred(env)) { 306 (*env)->ExceptionDescribe(env); 307 (*env)->ExceptionClear(env); 308 continue; 309 } 310 (*env)->DeleteLocalRef(env, oneMode); 311 } 312 } 313 CFRelease(allModes); 314 JNF_COCOA_EXIT(env); 315 316 return jreturnArray; 317 } 318 319 /* 320 * Class: sun_awt_CGraphicsDevice 321 * Method: nativeGetScaleFactor 322 * Signature: (I)D 323 */ 324 JNIEXPORT jdouble JNICALL 325 Java_sun_awt_CGraphicsDevice_nativeGetScaleFactor 326 (JNIEnv *env, jclass class, jint displayID) 327 { 328 __block jdouble ret = 1.0f; 329 330 JNF_COCOA_ENTER(env); 331 332 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ 333 NSArray *screens = [NSScreen screens]; 334 for (NSScreen *screen in screens) { 335 NSDictionary *screenInfo = [screen deviceDescription]; 336 NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"]; 337 if ([screenID pointerValue] == displayID){ 338 if ([screen respondsToSelector:@selector(backingScaleFactor)]) { 339 ret = [screen backingScaleFactor]; 340 } 341 break; 342 } 343 } 344 }]; 345 346 JNF_COCOA_EXIT(env); 347 return ret; 348 } |