From 31252e10950ee5ab6f2f812ddc64c9c59697be75 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 1 Feb 2013 16:48:38 -0500 Subject: MACOSX: Fix compilation with the 10.2.8 SDK This is a pretty bad hack of not using the kMusicDeviceProperty_SoundBankFSRef symbol and using its value instead. It felt wrong breaking 10.2.8 support just because of Soundfonts. --- backends/midi/coreaudio.cpp | 58 +++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 26 deletions(-) (limited to 'backends/midi/coreaudio.cpp') diff --git a/backends/midi/coreaudio.cpp b/backends/midi/coreaudio.cpp index 317268ae87..e42b8ca313 100644 --- a/backends/midi/coreaudio.cpp +++ b/backends/midi/coreaudio.cpp @@ -209,35 +209,41 @@ void MidiDriver_CORE::loadSoundFont(const char *soundfont) { FSRef fsref; err = FSPathMakeRef((const byte *)soundfont, &fsref, NULL); -#ifdef MAC_OS_X_VERSION_10_5 - // Use kMusicDeviceProperty_SoundBankFSRef if we know it's available - // (This became available in 10.3, but the 10.2 SDK has 10.3/10.4 defines) + SInt32 version; + err = Gestalt(gestaltSystemVersion, &version); if (err == noErr) { - err = AudioUnitSetProperty( - _synth, - kMusicDeviceProperty_SoundBankFSRef, kAudioUnitScope_Global, - 0, - &fsref, sizeof(fsref) - ); - } -#else - // Otherwise, we know kMusicDeviceProperty_SoundBankFSSpec is available - FSSpec fsSpec; - - if (err == noErr) - err = FSGetCatalogInfo(&fsref, kFSCatInfoNone, NULL, NULL, &fsSpec, NULL); - - if (err == noErr) { - err = AudioUnitSetProperty( - _synth, - kMusicDeviceProperty_SoundBankFSSpec, kAudioUnitScope_Global, - 0, - &fsSpec, sizeof(fsSpec) - ); + if (version >= 0x1030) { + // Use kMusicDeviceProperty_SoundBankFSRef in >= 10.3 + + // HACK HACK HACK HACK SUPER HACK: Using the value of 1012 instead of + // kMusicDeviceProperty_SoundBankFSRef so this compiles with the 10.2 + // SDK (which does not have that symbol). + if (err == noErr) { + err = AudioUnitSetProperty( + _synth, + /*kMusicDeviceProperty_SoundBankFSRef*/ 1012, kAudioUnitScope_Global, + 0, + &fsref, sizeof(fsref) + ); + } + } else { + // In 10.2, only kMusicDeviceProperty_SoundBankFSSpec is available + FSSpec fsSpec; + + if (err == noErr) + err = FSGetCatalogInfo(&fsref, kFSCatInfoNone, NULL, NULL, &fsSpec, NULL); + + if (err == noErr) { + err = AudioUnitSetProperty( + _synth, + kMusicDeviceProperty_SoundBankFSSpec, kAudioUnitScope_Global, + 0, + &fsSpec, sizeof(fsSpec) + ); + } + } } -#endif // MAC_OS_X_VERSION_10_5 - #else // kMusicDeviceProperty_SoundBankURL was added in 10.5 as a replacement // In addition, the File Manager API became deprecated starting in 10.8 -- cgit v1.2.3