remove the "ai_model" subsystem manually before the other subsystems
are taken down by the C++ runtime environment. This will later be done with runlevels. Why would we want to run nasal code in subsystem destructors? We don't really. But some data structures may use nasal, which are normally created/destroyed during runtime. And these will also be destroyed at fgfs exit. In the past things like these didn't happen, because someone had disabled all subsystem destructors ...
This commit is contained in:
parent
14fe03ba6f
commit
56d8181da3
1 changed files with 6 additions and 1 deletions
|
@ -104,8 +104,13 @@ fgSetupWind (double min_hdg, double max_hdg, double speed, double gust)
|
|||
void
|
||||
fgExit (int status)
|
||||
{
|
||||
SG_LOG(SG_GENERAL, SG_INFO, "Exiting FlightGear with status " << status);
|
||||
// remove subsystems first, which need access to other subsystems in their
|
||||
// destructors (e.g. "nasal")
|
||||
SGSubsystem *sub = globals->get_subsystem("ai_model");
|
||||
globals->get_subsystem_mgr()->get_group(SGSubsystemMgr::GENERAL)->remove_subsystem("ai_model");
|
||||
delete sub;
|
||||
|
||||
SG_LOG(SG_GENERAL, SG_INFO, "Exiting FlightGear with status " << status);
|
||||
exit(status);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue