1
0
Fork 0

Tweaks to startup configuration handling

- restore-defaults kills the nav cache, terra-sync cache
- new ignore-autosave option bypasses autosave.xml and leaves it
  untouched (does not over-write on exit)
This commit is contained in:
James Turner 2013-10-26 18:29:23 +01:00
parent d5b70e98e0
commit e93dc27153
4 changed files with 29 additions and 3 deletions

View file

@ -434,9 +434,10 @@ int fgInitConfig ( int argc, char **argv )
SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences");
fgLoadProps("preferences.xml", globals->get_props());
SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences");
// do not load user settings when reset to default is requested
if (flightgear::Options::sharedInstance()->isOptionSet("restore-defaults"))
// do not load user settings when reset to default is requested, or if
// told to explicitly ignore
if (options->isOptionSet("restore-defaults") || options->isOptionSet("ignore-autosave"))
{
SG_LOG(SG_ALL, SG_ALERT, "Ignoring user settings. Restoring defaults.");
}

View file

@ -131,6 +131,16 @@ static void fgIdleFunction ( void ) {
// and airports data in parallel with a nav-cache rebuild.
SGPath tsyncCache(globals->get_fg_home());
tsyncCache.append("terrasync-cache.xml");
// wipe the cache file if requested
if (flightgear::Options::sharedInstance()->isOptionSet("restore-defaults")) {
SG_LOG(SG_GENERAL, SG_INFO, "restore-defaults requested, wiping terrasync update cache at " <<
tsyncCache);
if (tsyncCache.exists()) {
tsyncCache.remove();
}
}
fgSetString("/sim/terrasync/cache-path", tsyncCache.c_str());
simgear::SGTerraSync* terra_sync = new simgear::SGTerraSync(globals->get_props());

View file

@ -1206,6 +1206,14 @@ fgOptCallSign(const char * arg)
return FG_OPTIONS_OK;
}
static int
fgOptIgnoreAutosave(const char* arg)
{
fgSetBool("/sim/startup/ignore-autosave", true);
// don't overwrite autosave on exit
fgSetBool("/sim/startup/save-on-exit", false);
return FG_OPTIONS_OK;
}
// Set a property for the --prop: option. Syntax: --prop:[<type>:]<name>=<value>
// <type> can be "double" etc. but also only the first letter "d".
@ -1403,6 +1411,7 @@ struct OptionDesc {
{"enable-fullscreen", false, OPTION_BOOL, "/sim/startup/fullscreen", true, "", 0 },
{"disable-save-on-exit", false, OPTION_BOOL, "/sim/startup/save-on-exit", false, "", 0 },
{"enable-save-on-exit", false, OPTION_BOOL, "/sim/startup/save-on-exit", true, "", 0 },
{"ignore-autosave", false, OPTION_FUNC, "", false, "", fgOptIgnoreAutosave },
{"restore-defaults", false, OPTION_BOOL, "/sim/startup/restore-defaults", true, "", 0 },
{"shading-flat", false, OPTION_BOOL, "/sim/rendering/shading", false, "", 0 },
{"shading-smooth", false, OPTION_BOOL, "/sim/rendering/shading", true, "", 0 },

View file

@ -58,6 +58,7 @@
#include <simgear/threads/SGGuard.hxx>
#include <Main/globals.hxx>
#include <Main/options.hxx>
#include "markerbeacon.hxx"
#include "navrecord.hxx"
#include <Airports/airport.hxx>
@ -1096,6 +1097,11 @@ NavDataCache* NavDataCache::instance()
bool NavDataCache::isRebuildRequired()
{
if (flightgear::Options::sharedInstance()->isOptionSet("restore-defaults")) {
SG_LOG(SG_NAVCACHE, SG_INFO, "NavCache: restore-defaults requested, will rebuild cache");
return true;
}
if (isCachedFileModified(d->aptDatPath) ||
isCachedFileModified(d->metarDatPath) ||
isCachedFileModified(d->navDatPath) ||