From 235e72829e55cbb1e7632fe1b2d1429f6f3be054 Mon Sep 17 00:00:00 2001 From: bjarni Date: Sun, 12 Feb 2006 14:31:33 +0000 Subject: [PATCH] (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 --- music/qtmidi.c | 13 ++++--------- os/macosx/osx_stdafx.h | 19 +++++++++++++++++++ stdafx.h | 7 +++++++ video/cocoa_v.m | 3 --- 4 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 os/macosx/osx_stdafx.h diff --git a/music/qtmidi.c b/music/qtmidi.c index dc668c8b0b..f6b2bed6ef 100644 --- a/music/qtmidi.c +++ b/music/qtmidi.c @@ -24,6 +24,10 @@ /* * OpenTTD includes. */ +#define WindowClass OSX_WindowClass +#include +#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 -#include #undef OTTD_Random #undef WindowClass #undef SL_ERROR -#undef Point -#undef Rect #undef bool #include diff --git a/os/macosx/osx_stdafx.h b/os/macosx/osx_stdafx.h new file mode 100644 index 0000000000..9567d70bac --- /dev/null +++ b/os/macosx/osx_stdafx.h @@ -0,0 +1,19 @@ +/* $Id$ */ + +#ifndef MACOS_STDAFX_H +#define MACOS_STDAFX_H + +#include +// 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 05fa003f7b..f3fbfbaf3e 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 ed996bdddd..7d6fd8b382 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 */