SDL’s cdrom and SoundManager are not supported on 64-bit Mac OS X builds.
The input API used in SDL_cocoakeyboard.m was 32-bit only in parts,
because it used 32-bit Carbon instead of Cocoa. This has been
corrected, thanks to Matti Hameister!
Signed-off-by: Matti Hameister <m.hami at 42degreesoffreedom.com>
Signed-off-by: Steven Noonan <@Steven_Noonan>—
Xcode/SDL/SDL.xcodeproj/project.pbxproj | 3 +++
include/SDL_config_macosx.h | 6 ++++++
src/audio/macrom/SDL_romaudio.c | 6 ++++++
src/audio/macrom/SDL_romaudio.h | 6 ++++++
src/cdrom/macosx/AudioFilePlayer.c | 4 ++++
src/cdrom/macosx/AudioFileReaderThread.c | 4 ++++
src/cdrom/macosx/CDPlayer.c | 5 +++++
src/cdrom/macosx/SDL_syscdrom.c | 2 ±
src/video/cocoa/SDL_cocoakeyboard.m | 21 +++++++++++++++++++±
src/video/cocoa/SDL_cocoamodes.m | 4 ++++
10 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
index 74851c5…e4db0f6 100644
— a/Xcode/SDL/SDL.xcodeproj/project.pbxproj
+++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
@@ -2859,6 +2859,7 @@
MACOSX_DEPLOYMENT_TARGET = “”;
MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.2;
-
OTHER_CFLAGS = "-fno-strict-aliasing"; PREBINDING = NO; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk;
@@ -2886,6 +2887,7 @@
MACOSX_DEPLOYMENT_TARGET = “”;
MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.2;
-
OTHER_CFLAGS = "-fno-strict-aliasing"; PREBINDING = NO; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk;
@@ -2913,6 +2915,7 @@
MACOSX_DEPLOYMENT_TARGET = “”;
MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.2;
-
OTHER_CFLAGS = "-fno-strict-aliasing"; PREBINDING = NO; SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk;
diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h
index 1a43516…d1180e2 100644
— a/include/SDL_config_macosx.h
+++ b/include/SDL_config_macosx.h
@@ -102,12 +102,18 @@
/* Enable various audio drivers */
#define SDL_AUDIO_DRIVER_COREAUDIO 1
+#ifndef _LP64
#define SDL_AUDIO_DRIVER_SNDMGR 1
+#endif
#define SDL_AUDIO_DRIVER_DISK 1
#define SDL_AUDIO_DRIVER_DUMMY 1
/* Enable various cdrom drivers */
+#ifndef _LP64
#define SDL_CDROM_MACOSX 1
+#else
+#define SDL_CDROM_DISABLED 1
+#endif
/* Enable various input drivers */
#define SDL_JOYSTICK_IOKIT 1
diff --git a/src/audio/macrom/SDL_romaudio.c b/src/audio/macrom/SDL_romaudio.c
index e9aaa5c…dae2413 100644
— a/src/audio/macrom/SDL_romaudio.c
+++ b/src/audio/macrom/SDL_romaudio.c
@@ -19,6 +19,9 @@
Sam Lantinga
slouken at libsdl.org
*/
+
+#ifndef _LP64
+
#include “SDL_config.h”
/* This should work on PowerPC and Intel Mac OS X, and Carbonized Mac OS 9. */
@@ -316,4 +319,7 @@ AudioBootStrap SNDMGR_bootstrap = {
“sndmgr”, SDL_MACOS_NAME " SoundManager", SNDMGR_Init, 0
};
+#endif
+
/* vi: set ts=4 sw=4 expandtab: */
+
diff --git a/src/audio/macrom/SDL_romaudio.h b/src/audio/macrom/SDL_romaudio.h
index 8dbbb1d…c955fcd 100644
— a/src/audio/macrom/SDL_romaudio.h
+++ b/src/audio/macrom/SDL_romaudio.h
@@ -19,6 +19,9 @@
Sam Lantinga
slouken at libsdl.org
*/
+
+#ifndef _LP64
+
#include “SDL_config.h”
#ifndef _SDL_romaudio_h
@@ -36,4 +39,7 @@ struct SDL_PrivateAudioData
};
#endif /* _SDL_romaudio_h /
+
+#endif
+
/ vi: set ts=4 sw=4 expandtab: */
diff --git a/src/cdrom/macosx/AudioFilePlayer.c b/src/cdrom/macosx/AudioFilePlayer.c
index f132b17…6782187 100644
— a/src/cdrom/macosx/AudioFilePlayer.c
+++ b/src/cdrom/macosx/AudioFilePlayer.c
@@ -24,6 +24,8 @@
*/
#include “SDL_config.h”
+#ifndef _LP64
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AudioFilePlayer.cpp
*/
@@ -394,4 +396,6 @@ new_AudioFilePlayer(const FSRef * inFileRef)
return afp;
}
+#endif
+
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/cdrom/macosx/AudioFileReaderThread.c b/src/cdrom/macosx/AudioFileReaderThread.c
index bc30f4f…0ff66ff 100644
— a/src/cdrom/macosx/AudioFileReaderThread.c
+++ b/src/cdrom/macosx/AudioFileReaderThread.c
@@ -24,6 +24,8 @@
*/
#include “SDL_config.h”
+#ifndef _LP64
+
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AudioFileManager.cpp
*/
@@ -654,4 +656,6 @@ new_AudioFileManager(AudioFilePlayer * inParent,
return afm;
}
+#endif
+
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/cdrom/macosx/CDPlayer.c b/src/cdrom/macosx/CDPlayer.c
index f4aecdb…52b4b02 100644
— a/src/cdrom/macosx/CDPlayer.c
+++ b/src/cdrom/macosx/CDPlayer.c
@@ -21,6 +21,8 @@
*/
#include “SDL_config.h”
+#ifdef SDL_CDROM_MACOSX
+
#include “CDPlayer.h”
#include “AudioFilePlayer.h”
#include “SDLOSXCAGuard.h”
@@ -666,4 +668,7 @@ RunCallBackThread(void *param)
}
/*}; // extern “C” /
+
+#endif / SDL_CDROM_MACOSX /
+
/ vi: set ts=4 sw=4 expandtab: */
diff --git a/src/cdrom/macosx/SDL_syscdrom.c b/src/cdrom/macosx/SDL_syscdrom.c
index 909a6c4…e2293b0 100644
— a/src/cdrom/macosx/SDL_syscdrom.c
+++ b/src/cdrom/macosx/SDL_syscdrom.c
@@ -21,7 +21,7 @@
*/
#include “SDL_config.h”
-#ifdef SDL_CDROM_MACOSX
+#ifndef _LP64
#include “SDL_syscdrom_c.h”
diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m
index f9b01f3…fb06eca 100644
— a/src/video/cocoa/SDL_cocoakeyboard.m
+++ b/src/video/cocoa/SDL_cocoakeyboard.m
@@ -28,7 +28,6 @@
#include <Carbon/Carbon.h>
#ifndef NX_DEVICERCTLKEYMASK
#define NX_DEVICELCTLKEYMASK 0x00000001
#endif
@@ -351,14 +350,23 @@ HandleModifiers(_THIS, unsigned short scancode, unsigned int modifierFlags)
static void
UpdateKeymap(SDL_VideoData *data)
{
+#ifdef _LP64
-
TISInputSourceRef key_layout;
-
const void *chr_data = NULL;
+#else
KeyboardLayoutRef key_layout;
const void *chr_data;
+#endif
int i;
SDL_scancode scancode;
SDLKey keymap[SDL_NUM_SCANCODES];/* See if the keymap needs to be updated */
+#ifdef _LP64 -
key_layout = TISCopyCurrentKeyboardLayoutInputSource();
+#else
KLGetCurrentKeyboardLayout(&key_layout);
+#endif
if (key_layout == data->key_layout) {
return;
}
@@ -367,8 +375,17 @@ UpdateKeymap(SDL_VideoData *data)
SDL_GetDefaultKeymap(keymap);/* Try Unicode data first (preferred as of Mac OS X 10.5) */
+#ifdef _LP64 -
CFDataRef currentKeyLayoutDataRef = (CFDataRef) TISGetInputSourceProperty (key_layout, kTISPropertyUnicodeKeyLayoutData);
-
if (currentKeyLayoutDataRef) {
-
chr_data = CFDataGetBytePtr (currentKeyLayoutDataRef);
-
}
-
if (chr_data) {
+#else
KLGetKeyboardLayoutProperty(key_layout, kKLuchrData, &chr_data);
if (chr_data) {
+#endif
UInt32 keyboard_type = LMGetKbdType();
OSStatus err;
@@ -400,6 +417,7 @@ UpdateKeymap(SDL_VideoData *data)
return;
}
+#ifndef _LP64
/* Fall back to older style key map data */
KLGetKeyboardLayoutProperty(key_layout, kKLKCHRData, &chr_data);
if (chr_data) {
@@ -449,6 +467,7 @@ UpdateKeymap(SDL_VideoData *data)
SDL_SetKeymap(data->keyboard, 0, keymap, SDL_NUM_SCANCODES);
return;
}
+#endif
}
void
diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m
index 115abc3…d656be3 100644
— a/src/video/cocoa/SDL_cocoamodes.m
+++ b/src/video/cocoa/SDL_cocoamodes.m
@@ -30,6 +30,7 @@
to fullscreen, we’ll set it manually (but only for the
main screen).
*/
+#ifndef _LP64
@interface NSScreen (NSScreenAccess)
- (void) setFrame:(NSRect)frame;
@end
@@ -40,6 +41,7 @@
_frame = frame;
}
@end
+#endif
static void
CG_SetError(const char *prefix, CGDisplayErr result)
@@ -255,7 +257,9 @@ Cocoa_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
We can hack around this bug by setting the screen rect
ourselves. This hack should be removed if/when the bug is fixed.
*/
+#ifndef _LP64
[[NSScreen mainScreen] setFrame:NSMakeRect(0,0,mode->w,mode->h)];
+#endif
return 0;
–
1.6.3.1