author | bjarni |
Fri, 21 Dec 2007 22:08:59 +0000 | |
changeset 8117 | c8c2b8ae0b2f |
parent 7986 | 6c841d55493e |
child 9085 | 8b3897a75aed |
permissions | -rw-r--r-- |
5941
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
1 |
/* $Id$ */ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
2 |
|
7965
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
3 |
#include <AvailabilityMacros.h> |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
4 |
|
5941
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
5 |
#include <AppKit/AppKit.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
6 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
7 |
#include <mach/mach.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
8 |
#include <mach/mach_host.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
9 |
#include <mach/host_info.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
10 |
#include <mach/machine.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
11 |
#include <stdio.h> |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
12 |
#include "../../stdafx.h" |
8117
c8c2b8ae0b2f
(svn r11678) -Fix (r11674): [OSX] fixed compilation
bjarni
parents:
7986
diff
changeset
|
13 |
#include "../../core/bitmath_func.hpp" |
5941
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
14 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
15 |
#ifndef CPU_SUBTYPE_POWERPC_970 |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
16 |
#define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
17 |
#endif |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
18 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
19 |
/* |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
20 |
* This file contains objective C |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
21 |
* Apple uses objective C instead of plain C to interact with OS specific/native functions |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
22 |
* |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
23 |
* Note: TrueLight's crosscompiler can handle this, but it likely needs a manual modification for each change in this file. |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
24 |
* To insure that the crosscompiler still works, let him try any changes before they are committed |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
25 |
*/ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
26 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
27 |
void ToggleFullScreen(bool fs); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
28 |
|
6247 | 29 |
static char *GetOSString() |
5941
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
30 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
31 |
static char buffer[175]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
32 |
const char* CPU; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
33 |
char OS[20]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
34 |
char newgrf[125]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
35 |
long sysVersion; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
36 |
extern const char _openttd_revision[]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
37 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
38 |
// get the hardware info |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
39 |
host_basic_info_data_t hostInfo; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
40 |
mach_msg_type_number_t infoCount; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
41 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
42 |
infoCount = HOST_BASIC_INFO_COUNT; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
43 |
host_info( |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
44 |
mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
45 |
); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
46 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
47 |
// replace the hardware info with strings, that tells a bit more than just an int |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
48 |
switch (hostInfo.cpu_subtype) { |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
49 |
#ifdef __POWERPC__ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
50 |
case CPU_SUBTYPE_POWERPC_750: CPU = "G3"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
51 |
case CPU_SUBTYPE_POWERPC_7400: |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
52 |
case CPU_SUBTYPE_POWERPC_7450: CPU = "G4"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
53 |
case CPU_SUBTYPE_POWERPC_970: CPU = "G5"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
54 |
default: CPU = "Unknown PPC"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
55 |
#else |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
56 |
/* it looks odd to have a switch for two cases, but it leaves room for easy |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
57 |
* expansion. Odds are that Apple will some day use newer CPUs than i686 |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
58 |
*/ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
59 |
case CPU_SUBTYPE_PENTPRO: CPU = "i686"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
60 |
default: CPU = "Unknown Intel"; break; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
61 |
#endif |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
62 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
63 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
64 |
// get the version of OSX |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
65 |
if (Gestalt(gestaltSystemVersion, &sysVersion) != noErr) { |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
66 |
sprintf(OS, "Undetected"); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
67 |
} else { |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
68 |
int majorHiNib = GB(sysVersion, 12, 4); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
69 |
int majorLoNib = GB(sysVersion, 8, 4); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
70 |
int minorNib = GB(sysVersion, 4, 4); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
71 |
int bugNib = GB(sysVersion, 0, 4); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
72 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
73 |
sprintf(OS, "%d%d.%d.%d", majorHiNib, majorLoNib, minorNib, bugNib); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
74 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
75 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
76 |
// make a list of used newgrf files |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
77 |
/* if (_first_grffile != NULL) { |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
78 |
char* n = newgrf; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
79 |
const GRFFile* file; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
80 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
81 |
for (file = _first_grffile; file != NULL; file = file->next) { |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
82 |
n = strecpy(n, " ", lastof(newgrf)); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
83 |
n = strecpy(n, file->filename, lastof(newgrf)); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
84 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
85 |
} else {*/ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
86 |
sprintf(newgrf, "none"); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
87 |
// } |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
88 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
89 |
snprintf( |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
90 |
buffer, lengthof(buffer), |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
91 |
"Please add this info: (tip: copy-paste works)\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
92 |
"CPU: %s, OSX: %s, OpenTTD version: %s\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
93 |
"NewGRF files:%s", |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
94 |
CPU, OS, _openttd_revision, newgrf |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
95 |
); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
96 |
return buffer; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
97 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
98 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
99 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
100 |
#ifdef WITH_SDL |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
101 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
102 |
void ShowMacDialog(const char* title, const char* message, const char* buttonLabel) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
103 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
104 |
NSRunAlertPanel([NSString stringWithCString: title], [NSString stringWithCString: message], [NSString stringWithCString: buttonLabel], nil, nil); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
105 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
106 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
107 |
#elif defined WITH_COCOA |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
108 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
109 |
void CocoaDialog(const char* title, const char* message, const char* buttonLabel); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
110 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
111 |
void ShowMacDialog(const char* title, const char* message, const char* buttonLabel) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
112 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
113 |
CocoaDialog(title, message, buttonLabel); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
114 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
115 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
116 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
117 |
#else |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
118 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
119 |
void ShowMacDialog(const char* title, const char* message, const char* buttonLabel) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
120 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
121 |
fprintf(stderr, "%s: %s\n", title, message); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
122 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
123 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
124 |
#endif |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
125 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
126 |
void ShowMacAssertDialog(const char* function, const char* file, const int line, const char* expression) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
127 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
128 |
const char* buffer = |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
129 |
[[NSString stringWithFormat:@ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
130 |
"An assertion has failed and OpenTTD must quit.\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
131 |
"%s in %s (line %d)\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
132 |
"\"%s\"\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
133 |
"\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
134 |
"You should report this error the OpenTTD developers if you think you found a bug.\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
135 |
"\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
136 |
"%s", |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
137 |
function, file, line, expression, GetOSString()] cString |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
138 |
]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
139 |
NSLog(@"%s", buffer); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
140 |
ToggleFullScreen(0); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
141 |
ShowMacDialog("Assertion Failed", buffer, "Quit"); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
142 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
143 |
// abort so that a debugger has a chance to notice |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
144 |
abort(); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
145 |
} |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
146 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
147 |
|
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
148 |
void ShowMacErrorDialog(const char *error) |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
149 |
{ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
150 |
const char* buffer = |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
151 |
[[NSString stringWithFormat:@ |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
152 |
"Please update to the newest version of OpenTTD\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
153 |
"If the problem presists, please report this to\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
154 |
"http://bugs.openttd.org\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
155 |
"\n" |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
156 |
"%s", |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
157 |
GetOSString()] cString |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
158 |
]; |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
159 |
ToggleFullScreen(0); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
160 |
ShowMacDialog(error, buffer, "Quit"); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
161 |
abort(); |
adaea39e84ab
(svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents:
diff
changeset
|
162 |
} |
7435
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
163 |
|
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
164 |
|
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
165 |
/** Determine the current user's locale. */ |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
166 |
const char *GetCurrentLocale(const char *) |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
167 |
{ |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
168 |
static char retbuf[32] = { '\0' }; |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
169 |
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults]; |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
170 |
NSArray* languages = [defs objectForKey:@"AppleLanguages"]; |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
171 |
NSString* preferredLang = [languages objectAtIndex:0]; |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
172 |
/* preferredLang is either 2 or 5 characters long ("xx" or "xx_YY"). */ |
7984
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
173 |
|
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
174 |
/* MacOS 10.3.9 can't handle encoding:NSASCIIStringEncoding |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
175 |
* we will completely disable compiling it for such old targets to avoid a warning */ |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
176 |
#if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_3) |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
177 |
/* Note: MAC_OS_X_VERSION_MAX_ALLOWED is the current OSX version/SDK by default */ |
7965
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
178 |
if (MacOSVersionIsAtLeast(10, 4, 0)) { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
179 |
[ preferredLang getCString:retbuf maxLength:32 encoding:NSASCIIStringEncoding ]; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
180 |
} else { |
7984
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
181 |
#else |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
182 |
/* 10.3.9 needs to start the { too */ |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
183 |
{ |
f01c62b32738
(svn r11540) -Fix: [OSX] Don't try to compile the quartz video driver on OSX 10.3. It will fail
bjarni
parents:
7965
diff
changeset
|
184 |
#endif |
7965
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
185 |
[ preferredLang getCString:retbuf maxLength:32 ]; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
186 |
} |
7435
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
187 |
return retbuf; |
c5d1a7a3235c
(svn r10851) -Feature [OSX]: OpenTTD will now pick the same language as finder is set to if no config file is found (ln-)
bjarni
parents:
6247
diff
changeset
|
188 |
} |
7965
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
189 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
190 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
191 |
/* |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
192 |
* This will only give an accurate result for versions before OS X 10.8 since it uses bcd encoding |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
193 |
* for the minor and bugfix version numbers and a scheme of representing all numbers from 9 and up |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
194 |
* with 9. This means we can't tell OS X 10.9 from 10.9 or 10.11. Please use GetMacOSVersionMajor() |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
195 |
* and GetMacOSVersionMinor() instead. |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
196 |
*/ |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
197 |
static long GetMacOSVersion() |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
198 |
{ |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
199 |
static long sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
200 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
201 |
if (sysVersion != -1) return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
202 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
203 |
if (Gestalt(gestaltSystemVersion, &sysVersion) != noErr) sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
204 |
return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
205 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
206 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
207 |
long GetMacOSVersionMajor() |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
208 |
{ |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
209 |
static long sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
210 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
211 |
if (sysVersion != -1) return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
212 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
213 |
sysVersion = GetMacOSVersion(); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
214 |
if (sysVersion == -1) return -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
215 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
216 |
if (sysVersion >= 0x1040) { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
217 |
if (Gestalt(gestaltSystemVersionMajor, &sysVersion) != noErr) sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
218 |
} else { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
219 |
sysVersion = GB(sysVersion, 12, 4) * 10 + GB(sysVersion, 8, 4); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
220 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
221 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
222 |
return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
223 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
224 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
225 |
long GetMacOSVersionMinor() |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
226 |
{ |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
227 |
static long sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
228 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
229 |
if (sysVersion != -1) return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
230 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
231 |
sysVersion = GetMacOSVersion(); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
232 |
if (sysVersion == -1) return -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
233 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
234 |
if (sysVersion >= 0x1040) { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
235 |
if (Gestalt(gestaltSystemVersionMinor, &sysVersion) != noErr) sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
236 |
} else { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
237 |
sysVersion = GB(sysVersion, 4, 4); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
238 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
239 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
240 |
return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
241 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
242 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
243 |
long GetMacOSVersionBugfix() |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
244 |
{ |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
245 |
static long sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
246 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
247 |
if (sysVersion != -1) return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
248 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
249 |
sysVersion = GetMacOSVersion(); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
250 |
if (sysVersion == -1) return -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
251 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
252 |
if (sysVersion >= 0x1040) { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
253 |
if (Gestalt(gestaltSystemVersionBugFix, &sysVersion) != noErr) sysVersion = -1; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
254 |
} else { |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
255 |
sysVersion = GB(sysVersion, 0, 4); |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
256 |
} |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
257 |
|
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
258 |
return sysVersion; |
e651c71175d6
(svn r11521) -Codechange: [OSX] Check what the running os version is in a cleaner way.
egladil
parents:
7839
diff
changeset
|
259 |
} |