src/macosx/native/sun/awt/CGraphicsDevice.m

Print this page




 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 }