/**
* Get the logging classes.
*/
+// XXX Making the result buffer be global is a band-aid that hopefully
+// delays its destruction 'til after its last use.
+namespace
+{
+string loggingResult;
+}
+
static const char *
getLoggingClasses ()
{
sgDebugClass classes = logbuf::get_log_classes();
- static string result;
- result = "";
+ loggingResult.clear();
for (int i = 0; log_class_mappings[i].c != SG_UNDEFD; i++) {
if ((classes&log_class_mappings[i].c) > 0) {
- if (!result.empty())
- result += '|';
- result += log_class_mappings[i].name;
+ if (!loggingResult.empty())
+ loggingResult += '|';
+ loggingResult += log_class_mappings[i].name;
}
}
- return result.c_str();
+ return loggingResult.c_str();
}
frozen = f;
// Stop sound on a pause
- SGSoundMgr *s = globals->get_soundmgr();
- if ( s != NULL ) {
+ SGSoundMgr *smgr = globals->get_soundmgr();
+ if ( smgr != NULL ) {
if ( f ) {
- s->pause();
- } else if (!fgGetBool("/sim/sound/pause")) {
- s->resume();
+ smgr->suspend();
+ } else if (fgGetBool("/sim/sound/working")) {
+ smgr->resume();
}
}
}
return magheading;
}
+/**
+ * Return the current track in degrees.
+ */
+static double
+getTrackMag ()
+{
+ double magtrack;
+ magtrack = current_aircraft.fdm_state->get_Track() - getMagVar();
+ if (magtrack < 0) magtrack += 360;
+ return magtrack;
+}
+
static long
getWarp ()
{
// Orientation
fgTie("/orientation/heading-magnetic-deg", getHeadingMag);
+ fgTie("/orientation/track-magnetic-deg", getTrackMag);
fgTie("/environment/magnetic-variation-deg", getMagVar);
fgTie("/environment/magnetic-dip-deg", getMagDip);
// Orientation
fgUntie("/orientation/heading-magnetic-deg");
+ fgUntie("/orientation/track-magnetic-deg");
// Environment
fgUntie("/environment/magnetic-variation-deg");