- remove the OSX_BUNDLE crap *I* introduced years ago - we're always a a bun
dle on Mac now.
- fix up the default fg-root on Mac to be FlightGear.app/Contents/Resources/
data - i.e the location used by the macflightgear.org distro, and indeed the obv
ious 'correct' location. Not sure why I didn't use that in the first place, back
in the day.
- remove the CPSForegroundEnable hack. For one thing, we're a bundle and don
't need it, and for another, osgViewer on Mac does the same logic using a newer,
public API rather than a hack into the OS.
- remove the strange logic for doing fgOSInit 'early' (in bootstrap rather t
han main) when running from the command line on Mac; again this is obsolete, and
no one seems to know why it was ever necessary. I guess it was an interaction w
ith SDL when running without a bundle.
- (not Mac related) remove obsolete code bracketed by ENABLE_PLIB_JOYSTICK a
nd USE_GLIDE (neither of which are ever set, even from config.h that I can see)
in main.cxx
}
#endif
-#ifdef __APPLE__
-
-typedef struct
-{
- int lo;
- int hi;
-} PSN;
-
-extern "C" {
- short CPSGetCurrentProcess(PSN *psn);
- short CPSSetProcessName (PSN *psn, char *processname);
- short CPSEnableForegroundOperation(PSN *psn, int _arg2, int _arg3, int _arg4, int _arg5);
- short CPSSetFrontProcess(PSN *psn);
-};
-
-#define CPSEnableFG(psn) CPSEnableForegroundOperation(psn,0x03,0x3C,0x2C,0x1103)
-
-#endif
-
#ifdef _MSC_VER
int main ( int argc, char **argv );
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
_control87(MCW_EM, MCW_EM); /* defined in float.h */
#endif
- // Keyboard focus hack
-#if defined(__APPLE__) && !defined(OSX_BUNDLE)
- {
- PSN psn;
-
- fgOSInit (&argc, argv);
- _bootstrap_OSInit++;
-
- CPSGetCurrentProcess(&psn);
- CPSSetProcessName(&psn, "FlightGear");
- CPSEnableFG(&psn);
- CPSSetFrontProcess(&psn);
- }
-#endif
-
// FIXME: add other, more specific
// exceptions.
try {
root = "/FlightGear";
#elif defined( WIN32 )
root = "\\FlightGear";
-#elif defined(OSX_BUNDLE)
- /* 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.
+#elif defined(__APPLE__)
+ /*
+ The following code looks for the base package inside the application
+ bundle, in the standard Contents/Resources location.
*/
- CFBundleRef appBundle = CFBundleGetMainBundle();
- CFURLRef appUrl = CFBundleCopyBundleURL(appBundle);
- CFRelease(appBundle);
+ CFURLRef resourcesUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
- // 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);
+ // look for a 'data' subdir
+ CFURLRef dataDir = CFURLCreateCopyAppendingPathComponent(NULL, resourcesUrl, 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(resourcesUrl);
CFRelease(dataDir);
CFRelease(path);
#else
SG_LOG( SG_ALL, SG_DEBUG, "Running Main Loop");
SG_LOG( SG_ALL, SG_DEBUG, "======= ==== ====");
-#if defined( ENABLE_PLIB_JOYSTICK )
- // Read joystick and update control settings
- // if ( fgGetString("/sim/control-mode") == "joystick" )
- // {
- // fgJoystickRead();
- // }
-#endif
-
// Fix elevation. I'm just sticking this here for now, it should
// probably move eventually
system ( command.c_str() );
}
#endif
-
- // These are a few miscellaneous things that aren't really
- // "subsystems" but still need to be initialized.
-
-#ifdef USE_GLIDE
- if ( strstr ( general.get_glRenderer(), "Glide" ) ) {
- grTexLodBiasValue ( GR_TMU0, 1.0 ) ;
- }
-#endif
-
// This is the top level init routine which calls all the
// other subsystem initialization routines. If you are adding
// a subsystem to flightgear, its initialization call should be
}
// Initialize the Window/Graphics environment.
-#if !defined(__APPLE__) || defined(OSX_BUNDLE)
- // Mac OS X command line ("non-bundle") applications call this
- // from main(), in bootstrap.cxx. Andy doesn't know why, someone
- // feel free to add comments...
fgOSInit(&argc, argv);
_bootstrap_OSInit++;
-#endif
fgRegisterWindowResizeHandler( &FGRenderer::resize );
fgRegisterIdleHandler( &fgIdleFunction );