changeset 18074:dc6708dac309 draft

(svn r22895) -Add: [OSX] Alternative code for the API calls deprecated in OSX 10.6 in the quartz video driver
author planetmaker <planetmaker@openttd.org>
date Mon, 05 Sep 2011 15:52:04 +0000
parents 02b8027eef0b
children 3a0d7c284a59
files src/video/cocoa/wnd_quartz.mm
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/video/cocoa/wnd_quartz.mm
+++ b/src/video/cocoa/wnd_quartz.mm
@@ -206,10 +206,14 @@
 
 void WindowQuartzSubdriver::GetDeviceInfo()
 {
-	/* Initialize the video settings; this data persists between mode switches */
+	/* Initialize the video settings; this data persists between mode switches
+	 * and gather some information that is useful to know about the display */
+
+#	if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
+	/* This way is deprecated as of OSX 10.6 but continues to work.Thus use it
+	 * always, unless allowed to skip compatibility with 10.5 and earlier */
 	CFDictionaryRef cur_mode = CGDisplayCurrentMode(kCGDirectMainDisplay);
 
-	/* Gather some information that is useful to know about the display */
 	CFNumberGetValue(
 		(const __CFNumber*)CFDictionaryGetValue(cur_mode, kCGDisplayWidth),
 		kCFNumberSInt32Type, &this->device_width
@@ -219,6 +223,16 @@
 		(const __CFNumber*)CFDictionaryGetValue(cur_mode, kCGDisplayHeight),
 		kCFNumberSInt32Type, &this->device_height
 	);
+#	else
+	/* Use the new API when compiling for OSX 10.6 or later */
+	CGDisplayModeRef cur_mode = CGDisplayCopyDisplayMode(kCGDirectMainDisplay);
+	if (cur_mode == NULL) { return; }
+
+	this->device_width = CGDisplayModeGetWidth(cur_mode);
+	this->device_height = CGDisplayModeGetHeight(cur_mode);
+
+	CGDisplayModeRelease(cur_mode);
+#	endif
 }
 
 /** Switch to full screen mode on OSX 10.7