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

Print this page




 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 }