7175566: [macosx] Glich in fix for CR7124247 caused MacOS crash during PIT testing

Reviewed-by: anthony, dcherepanov
This commit is contained in:
Alexander Zuev 2012-06-08 22:21:53 +04:00
parent 92246eda42
commit aaafa0557d

View file

@ -92,8 +92,8 @@ static jobject createJavaDisplayMode(CGDisplayModeRef mode, JNIEnv *env, jint di
CFStringRef currentBPP = CGDisplayModeCopyPixelEncoding(mode);
bpp = getBPPFromModeString(currentBPP);
refrate = CGDisplayModeGetRefreshRate(mode);
h = CGDisplayPixelsHigh(displayID);
w = CGDisplayPixelsWide(displayID);
h = CGDisplayModeGetHeight(mode);
w = CGDisplayModeGetWidth(mode);
CFRelease(currentBPP);
static JNF_CLASS_CACHE(jc_DisplayMode, "java/awt/DisplayMode");
static JNF_CTOR_CACHE(jc_DisplayMode_ctor, jc_DisplayMode, "(IIII)V");
@ -154,14 +154,18 @@ Java_sun_awt_CGraphicsDevice_nativeSetDisplayMode
CFArrayRef allModes = CGDisplayCopyAllDisplayModes(displayID, NULL);
CGDisplayModeRef closestMatch = getBestModeForParameters(allModes, (int)w, (int)h, (int)bpp, (int)refrate);
if (closestMatch != NULL) {
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
CGDisplayConfigRef config;
CGError retCode = CGBeginDisplayConfiguration(&config);
if (retCode == kCGErrorSuccess) {
CGConfigureDisplayWithDisplayMode(config, displayID, closestMatch, NULL);
CGCompleteDisplayConfiguration(config, kCGConfigureForAppOnly);
if (config != NULL) {
CFRelease(config);
}
}
}];
}
CFRelease(allModes);
JNF_COCOA_EXIT(env);
}