cocoa: don't crash if display server doesn't give us display modes
This commit is contained in:
parent
2ac1734566
commit
59c3aa3ef6
|
|
@ -148,11 +148,14 @@ load_display_information() {
|
|||
//_display_information->_device_id = CGDisplaySerialNumber(_display);
|
||||
|
||||
// Display modes
|
||||
size_t num_modes = 0;
|
||||
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
|
||||
CFArrayRef modes = CGDisplayCopyAllDisplayModes(_display, NULL);
|
||||
size_t num_modes = CFArrayGetCount(modes);
|
||||
_display_information->_total_display_modes = num_modes;
|
||||
_display_information->_display_mode_array = new DisplayMode[num_modes];
|
||||
if (modes != NULL) {
|
||||
num_modes = CFArrayGetCount(modes);
|
||||
_display_information->_total_display_modes = num_modes;
|
||||
_display_information->_display_mode_array = new DisplayMode[num_modes];
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < num_modes; ++i) {
|
||||
CGDisplayModeRef mode = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i);
|
||||
|
|
@ -189,13 +192,17 @@ load_display_information() {
|
|||
}
|
||||
CFRelease(encoding);
|
||||
}
|
||||
CFRelease(modes);
|
||||
if (modes != NULL) {
|
||||
CFRelease(modes);
|
||||
}
|
||||
|
||||
#else
|
||||
CFArrayRef modes = CGDisplayAvailableModes(_display);
|
||||
size_t num_modes = CFArrayGetCount(modes);
|
||||
_display_information->_total_display_modes = num_modes;
|
||||
_display_information->_display_mode_array = new DisplayMode[num_modes];
|
||||
if (modes != NULL) {
|
||||
num_modes = CFArrayGetCount(modes);
|
||||
_display_information->_total_display_modes = num_modes;
|
||||
_display_information->_display_mode_array = new DisplayMode[num_modes];
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < num_modes; ++i) {
|
||||
CFDictionaryRef mode = (CFDictionaryRef) CFArrayGetValueAtIndex(modes, i);
|
||||
|
|
|
|||
Loading…
Reference in New Issue