259 260 CFIndex n; 261 for (n=0; n < numModes; n++) { 262 CGDisplayModeRef cRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(allModes, n); 263 if (cRef != NULL) { 264 jobject oneMode = createJavaDisplayMode(cRef, env, displayID); 265 (*env)->SetObjectArrayElement(env, jreturnArray, n, oneMode); 266 if ((*env)->ExceptionOccurred(env)) { 267 (*env)->ExceptionDescribe(env); 268 (*env)->ExceptionClear(env); 269 continue; 270 } 271 (*env)->DeleteLocalRef(env, oneMode); 272 } 273 } 274 CFRelease(allModes); 275 JNF_COCOA_EXIT(env); 276 277 return jreturnArray; 278 } | 259 260 CFIndex n; 261 for (n=0; n < numModes; n++) { 262 CGDisplayModeRef cRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(allModes, n); 263 if (cRef != NULL) { 264 jobject oneMode = createJavaDisplayMode(cRef, env, displayID); 265 (*env)->SetObjectArrayElement(env, jreturnArray, n, oneMode); 266 if ((*env)->ExceptionOccurred(env)) { 267 (*env)->ExceptionDescribe(env); 268 (*env)->ExceptionClear(env); 269 continue; 270 } 271 (*env)->DeleteLocalRef(env, oneMode); 272 } 273 } 274 CFRelease(allModes); 275 JNF_COCOA_EXIT(env); 276 277 return jreturnArray; 278 } 279 280 /* 281 * Class: sun_awt_CGraphicsDevice 282 * Method: nativeGetScaleFactor 283 * Signature: (I)D 284 */ 285 JNIEXPORT jdouble JNICALL 286 Java_sun_awt_CGraphicsDevice_nativeGetScaleFactor 287 (JNIEnv *env, jclass class, jint displayID) 288 { 289 __block jdouble ret = 1.0f; 290 291 JNF_COCOA_ENTER(env); 292 293 [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ 294 NSArray *screens = [NSScreen screens]; 295 for (NSScreen *screen in screens) { 296 NSDictionary *screenInfo = [screen deviceDescription]; 297 NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"]; 298 if ([screenID pointerValue] == displayID){ 299 if ([screen respondsToSelector:@selector(backingScaleFactor)]) { 300 ret = [screen backingScaleFactor]; 301 } 302 break; 303 } 304 } 305 }]; 306 307 JNF_COCOA_EXIT(env); 308 return ret; 309 } |