summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2006-02-12 14:31:33 +0000
committerbjarni <bjarni@openttd.org>2006-02-12 14:31:33 +0000
commit235e72829e55cbb1e7632fe1b2d1429f6f3be054 (patch)
tree69d0102238a85f5bd3d34ca4d93e1973a70ab771
parent8cf72cdcabcf95da90dc152cb9459b94f4ff7041 (diff)
downloadopenttd-235e72829e55cbb1e7632fe1b2d1429f6f3be054.tar.xz
(svn r3596) -Codechange: [OSX] changed to use Apple's macros instead of OTTD macros for endian conversion
This increases the execution speed a lot since GCC can't detect the OTTD macro as an endian conversion while Apple's code uses the instruction to convert endian instead of a series of instructions to produce the same result Since we don't have that many endian conversions in the game, overall performance should not increase noteworthy
-rw-r--r--music/qtmidi.c13
-rw-r--r--os/macosx/osx_stdafx.h19
-rw-r--r--stdafx.h7
-rw-r--r--video/cocoa_v.m3
4 files changed, 30 insertions, 12 deletions
diff --git a/music/qtmidi.c b/music/qtmidi.c
index dc668c8b0..f6b2bed6e 100644
--- a/music/qtmidi.c
+++ b/music/qtmidi.c
@@ -24,6 +24,10 @@
/*
* OpenTTD includes.
*/
+#define WindowClass OSX_WindowClass
+#include <QuickTime/QuickTime.h>
+#undef WindowClass
+
#include "../stdafx.h"
#include "../openttd.h"
#include "qtmidi.h"
@@ -32,19 +36,10 @@
* System includes. We need to workaround with some defines because there's
* stuff already defined in QuickTime headers.
*/
-#define bool OSX_bool
-#define Rect OSX_Rect
-#define Point OSX_Point
-#define SL_ERROR OSX_SL_ERROR
-#define WindowClass OSX_WindowClass
#define OTTD_Random OSX_OTTD_Random
-#include <CoreServices/CoreServices.h>
-#include <QuickTime/QuickTime.h>
#undef OTTD_Random
#undef WindowClass
#undef SL_ERROR
-#undef Point
-#undef Rect
#undef bool
#include <assert.h>
diff --git a/os/macosx/osx_stdafx.h b/os/macosx/osx_stdafx.h
new file mode 100644
index 000000000..9567d70ba
--- /dev/null
+++ b/os/macosx/osx_stdafx.h
@@ -0,0 +1,19 @@
+/* $Id$ */
+
+#ifndef MACOS_STDAFX_H
+#define MACOS_STDAFX_H
+
+#include <CoreServices/CoreServices.h>
+// remove the variables that CoreServices defines, but we define ourselves too
+#undef bool
+#undef false
+#undef true
+
+/* Name conflict */
+#define Rect OTTDRect
+#define Point OTTDPoint
+#define GetTime OTTDGetTime
+
+#define SL_ERROR OSX_SL_ERROR
+
+#endif /* MACOS_STDAFX_H */
diff --git a/stdafx.h b/stdafx.h
index 05fa003f7..f3fbfbaf3 100644
--- a/stdafx.h
+++ b/stdafx.h
@@ -52,8 +52,15 @@
# endif
#endif /* __MORPHOS__ */
+#ifdef __APPLE__
+#include "os/macosx/osx_stdafx.h"
+// make endian swapping use Apple's macros to increase speed
+#define BSWAP32(x) Endian32_Swap(x)
+#define BSWAP16(x) Endian16_Swap(x)
+#else
#define BSWAP32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) << 8) & 0xFF0000) | (((x) << 24) & 0xFF000000))
#define BSWAP16(x) ((x) >> 8 | (x) << 8)
+#endif
// by default we use [] var arrays
#define VARARRAY_SIZE
diff --git a/video/cocoa_v.m b/video/cocoa_v.m
index ed996bddd..7d6fd8b38 100644
--- a/video/cocoa_v.m
+++ b/video/cocoa_v.m
@@ -36,9 +36,6 @@ extern void HideMenuBar(void);
#endif
-/* Name conflict */
-#define Rect OTTDRect
-#define Point OTTDPoint
/* Defined in ppc/param.h or i386/param.h included from sys/param.h */
#undef ALIGN
/* Defined in stdbool.h */