Use models from centralized model cache

* no copy needed
* cache is synchronized when loading models
This commit is contained in:
Klaus Basan
2019-04-21 22:54:10 +02:00
parent 5caea5ad9b
commit 599064fe6c
4 changed files with 17 additions and 4 deletions

View File

@@ -10,6 +10,7 @@
#include "blackcore/simulator.h" #include "blackcore/simulator.h"
#include "blackcore/webdataservices.h" #include "blackcore/webdataservices.h"
#include "blackcore/application.h" #include "blackcore/application.h"
#include "blackmisc/simulation/data/modelcaches.h"
#include "blackmisc/directoryutils.h" #include "blackmisc/directoryutils.h"
#include "blackmisc/threadutils.h" #include "blackmisc/threadutils.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
@@ -34,6 +35,7 @@ using namespace BlackMisc::Aviation;
using namespace BlackMisc::Geo; using namespace BlackMisc::Geo;
using namespace BlackMisc::Math; using namespace BlackMisc::Math;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation::Data;
using namespace BlackMisc::Simulation::Settings; using namespace BlackMisc::Simulation::Settings;
using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::PhysicalQuantities;
using namespace BlackMisc::Network; using namespace BlackMisc::Network;
@@ -1052,6 +1054,15 @@ namespace BlackCore
// can be overridden // can be overridden
} }
CAircraftModelList ISimulator::getModelSet() const
{
const CSimulatorInfo simulator = this->getSimulatorInfo();
if (!simulator.isSingleSimulator()) { return CAircraftModelList(); }
CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator);
return CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator);
}
QString ISimulator::latestLoggedDataFormatted(const CCallsign &cs) const QString ISimulator::latestLoggedDataFormatted(const CCallsign &cs) const
{ {
const SituationLog s = m_interpolationLogger.getLastSituationLog(cs); const SituationLog s = m_interpolationLogger.getLastSituationLog(cs);

View File

@@ -535,6 +535,9 @@ namespace BlackCore
//! Own model has been changed //! Own model has been changed
virtual void onOwnModelChanged(const BlackMisc::Simulation::CAircraftModel &newModel); virtual void onOwnModelChanged(const BlackMisc::Simulation::CAircraftModel &newModel);
//! Get the model set
BlackMisc::Simulation::CAircraftModelList getModelSet() const;
//! Lookup against DB data //! Lookup against DB data
static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model); static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model);

View File

@@ -540,7 +540,7 @@ namespace BlackSimPlugin
QList<Prefix> packages; QList<Prefix> packages;
Q_ASSERT(isConnected()); Q_ASSERT(isConnected());
const CAircraftModelList models = m_modelSet.getThreadLocal(); const CAircraftModelList models = this->getModelSet();
for (const auto &model : models) for (const auto &model : models)
{ {
const QString &modelFile = model.getFileName(); const QString &modelFile = model.getFileName();

View File

@@ -235,7 +235,6 @@ namespace BlackSimPlugin
QTimer m_airportUpdater; QTimer m_airportUpdater;
QTimer m_pendingAddedTimer; QTimer m_pendingAddedTimer;
BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
BlackMisc::CData<BlackMisc::Simulation::Data::TModelSetCacheXP> m_modelSet { this }; //!< XPlane model set
BlackMisc::Simulation::CSimulatedAircraftList m_pendingToBeAddedAircraft; //!< aircraft to be added BlackMisc::Simulation::CSimulatedAircraftList m_pendingToBeAddedAircraft; //!< aircraft to be added
QHash<BlackMisc::Aviation::CCallsign, qint64> m_addingInProgressAircraft; //!< aircraft just adding QHash<BlackMisc::Aviation::CCallsign, qint64> m_addingInProgressAircraft; //!< aircraft just adding
BlackMisc::Simulation::CSimulatedAircraftList m_aircraftAddedFailed; //! aircraft for which adding failed BlackMisc::Simulation::CSimulatedAircraftList m_aircraftAddedFailed; //! aircraft for which adding failed