Fix spurious event-mgr warnings

- don't warn on removeTask if the event-manager was already shutdown,
  as happens during normal FG shutdown or reset.
This commit is contained in:
James Turner 2014-01-23 12:49:39 +00:00
parent 3b5ed81216
commit ed9764f923
2 changed files with 21 additions and 2 deletions

View File

@ -38,7 +38,8 @@ void SGTimer::run()
(*callback)(); (*callback)();
} }
SGEventMgr::SGEventMgr() SGEventMgr::SGEventMgr() :
_inited(false)
{ {
} }
@ -54,8 +55,18 @@ void SGEventMgr::unbind()
_rtProp.clear(); _rtProp.clear();
} }
void SGEventMgr::init()
{
if (_inited) {
SG_LOG(SG_GENERAL, SG_WARN, "duplicate init of SGEventMgr");
}
_inited = true;
}
void SGEventMgr::shutdown() void SGEventMgr::shutdown()
{ {
_inited = false;
_simQueue.clear(); _simQueue.clear();
_rtQueue.clear(); _rtQueue.clear();
} }
@ -70,6 +81,13 @@ void SGEventMgr::update(double delta_time_sec)
void SGEventMgr::removeTask(const std::string& name) void SGEventMgr::removeTask(const std::string& name)
{ {
// due to the ordering of the event-mgr in FG, tasks can be removed
// after we are shutdown (and hence, have all been cleared). Guard
// against this so we don't generate warnings below.
if (!_inited) {
return;
}
SGTimer* t = _simQueue.findByName(name); SGTimer* t = _simQueue.findByName(name);
if (t) { if (t) {
_simQueue.remove(t); _simQueue.remove(t);

View File

@ -72,7 +72,7 @@ public:
SGEventMgr(); SGEventMgr();
~SGEventMgr(); ~SGEventMgr();
virtual void init() {} virtual void init();
virtual void update(double delta_time_sec); virtual void update(double delta_time_sec);
virtual void unbind(); virtual void unbind();
virtual void shutdown(); virtual void shutdown();
@ -130,6 +130,7 @@ private:
SGPropertyNode_ptr _rtProp; SGPropertyNode_ptr _rtProp;
SGTimerQueue _rtQueue; SGTimerQueue _rtQueue;
SGTimerQueue _simQueue; SGTimerQueue _simQueue;
bool _inited;
}; };
#endif // _SG_EVENT_MGR_HXX #endif // _SG_EVENT_MGR_HXX