[swift] Initialize/cleanup traffic module correctly
This commit is contained in:
parent
7b9940f1b1
commit
91263fc873
3 changed files with 20 additions and 6 deletions
|
@ -22,10 +22,20 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
FGSwiftAircraftManager::FGSwiftAircraftManager()
|
FGSwiftAircraftManager::FGSwiftAircraftManager()
|
||||||
= default;
|
{
|
||||||
|
m_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
FGSwiftAircraftManager::~FGSwiftAircraftManager()
|
FGSwiftAircraftManager::~FGSwiftAircraftManager()
|
||||||
= default;
|
{
|
||||||
|
this->removeAllPlanes();
|
||||||
|
m_initialized = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FGSwiftAircraftManager::isInitialized() const
|
||||||
|
{
|
||||||
|
return m_initialized;
|
||||||
|
}
|
||||||
|
|
||||||
bool FGSwiftAircraftManager::addPlane(const std::string& callsign, const std::string& modelString)
|
bool FGSwiftAircraftManager::addPlane(const std::string& callsign, const std::string& modelString)
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,8 +39,11 @@ public:
|
||||||
void removePlane(const std::string& callsign);
|
void removePlane(const std::string& callsign);
|
||||||
void removeAllPlanes();
|
void removeAllPlanes();
|
||||||
double getElevationAtPosition(const std::string &callsign, const SGGeod& pos) const;
|
double getElevationAtPosition(const std::string &callsign, const SGGeod& pos) const;
|
||||||
|
bool isInitialized() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<std::string, FGAISwiftAircraft*> aircraftByCallsign;
|
std::unordered_map<std::string, FGAISwiftAircraft*> aircraftByCallsign;
|
||||||
|
bool m_initialized = false;
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -34,7 +34,6 @@ namespace FGSwiftBus {
|
||||||
|
|
||||||
CTraffic::CTraffic()
|
CTraffic::CTraffic()
|
||||||
{
|
{
|
||||||
acm.reset(new FGSwiftAircraftManager());
|
|
||||||
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic started");
|
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic started");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +57,8 @@ const std::string& CTraffic::ObjectPath()
|
||||||
|
|
||||||
bool CTraffic::initialize()
|
bool CTraffic::initialize()
|
||||||
{
|
{
|
||||||
return true;
|
acm.reset(new FGSwiftAircraftManager());
|
||||||
|
return acm->isInitialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTraffic::emitSimFrame()
|
void CTraffic::emitSimFrame()
|
||||||
|
@ -77,12 +77,13 @@ void CTraffic::emitPlaneAdded(const std::string& callsign)
|
||||||
|
|
||||||
void CTraffic::cleanup()
|
void CTraffic::cleanup()
|
||||||
{
|
{
|
||||||
acm->removeAllPlanes();
|
acm.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTraffic::dbusDisconnectedHandler()
|
void CTraffic::dbusDisconnectedHandler()
|
||||||
{
|
{
|
||||||
acm->removeAllPlanes();
|
if(acm)
|
||||||
|
acm->removeAllPlanes();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* introspection_traffic = DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE;
|
const char* introspection_traffic = DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE;
|
||||||
|
|
Loading…
Reference in a new issue