1
0
Fork 0

James Turner:

Here's a patch to locate the base package inside the application bundle on OS-X. The patch also disables the CPSForeground hack in boostrap.cxx, which is unnecessary if the we're running as a proper bundle rather than a Unix command line program.

Both of these changes are only compiled if OSX_BUNDLE is defined (I'm doing this via a setting in ProjectBuilder), so if you're building on OS-X using configure + make, you shouldn't see any chance.
This commit is contained in:
ehofman 2003-10-19 19:15:41 +00:00
parent bf859a91c3
commit 093702d773
2 changed files with 22 additions and 3 deletions

View file

@ -120,7 +120,7 @@ int main ( int argc, char **argv ) {
#endif #endif
// Keyboard focus hack // Keyboard focus hack
#ifdef __APPLE__ #if defined(__APPLE__) && !defined(OSX_BUNDLE)
{ {
PSN psn; PSN psn;

View file

@ -268,8 +268,27 @@ bool fgInitFGRoot ( int argc, char **argv ) {
root = "/FlightGear"; root = "/FlightGear";
#elif defined( WIN32 ) #elif defined( WIN32 )
root = "\\FlightGear"; root = "\\FlightGear";
#elif defined( macintosh ) #elif defined(OSX_BUNDLE)
root = ""; /* the following code looks for the base package directly inside
the application bundle. This can be changed fairly easily by
fiddling with the code below. And yes, I know it's ugly and verbose.
*/
CFBundleRef appBundle = CFBundleGetMainBundle();
CFURLRef appUrl = CFBundleCopyBundleURL(appBundle);
CFRelease(appBundle);
// look for a 'data' subdir directly inside the bundle : is there
// a better place? maybe in Resources? I don't know ...
CFURLRef dataDir = CFURLCreateCopyAppendingPathComponent(NULL, appUrl, CFSTR("data"), true);
// now convert down to a path, and the a c-string
CFStringRef path = CFURLCopyFileSystemPath(dataDir, kCFURLPOSIXPathStyle);
root = CFStringGetCStringPtr(path, CFStringGetSystemEncoding());
// tidy up.
CFRelease(appBundle);
CFRelease(dataDir);
CFRelease(path);
#else #else
root = PKGLIBDIR; root = PKGLIBDIR;
#endif #endif