Synchronize model set in simulator context and improved setting of model set in matcher (ignored when same simulator)

This commit is contained in:
Klaus Basan
2018-08-08 04:59:20 +02:00
parent 6897abe912
commit 6548c71521
5 changed files with 17 additions and 7 deletions

View File

@@ -68,7 +68,7 @@ namespace BlackSample
// sync definitions, remove redundant ones // sync definitions, remove redundant ones
CAircraftMatcher matcher; CAircraftMatcher matcher;
matcher.setModelSet(vpRulesReader.getAsModelsFromCache(), CSimulatorInfo::FSX); matcher.setModelSet(vpRulesReader.getAsModelsFromCache(), CSimulatorInfo::FSX, true);
const CAircraftIcaoCode icao("C172"); const CAircraftIcaoCode icao("C172");
streamOut << "Searching for " << icao << endl; streamOut << "Searching for " << icao << endl;

View File

@@ -517,8 +517,15 @@ namespace BlackCore
return icao; return icao;
} }
int CAircraftMatcher::setModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator) int CAircraftMatcher::setModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator, bool forced)
{ {
if (!simulator.isSingleSimulator()) { return 0; }
if (!forced && m_simulator == simulator && m_modelSet.size() > 0)
{
// same simulator with models
return m_modelSet.size();
}
CAircraftModelList modelsCleaned(models); CAircraftModelList modelsCleaned(models);
const int r1 = modelsCleaned.removeAllWithoutModelString(); const int r1 = modelsCleaned.removeAllWithoutModelString();
const int r2 = modelsCleaned.removeIfExcluded(); const int r2 = modelsCleaned.removeIfExcluded();

View File

@@ -157,7 +157,7 @@ namespace BlackCore
//! Set the models we want to use //! Set the models we want to use
//! \note uses a set from "somewhere else" so it can also be used with arbitrary sets for testing //! \note uses a set from "somewhere else" so it can also be used with arbitrary sets for testing
int setModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator); int setModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator, bool forced);
//! Default model //! Default model
const BlackMisc::Simulation::CAircraftModel &getDefaultModel() const { return m_defaultModel; } const BlackMisc::Simulation::CAircraftModel &getDefaultModel() const { return m_defaultModel; }

View File

@@ -175,6 +175,9 @@ namespace BlackCore
{ {
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
const CSimulatorInfo simulator = m_modelSetSimulator.get(); const CSimulatorInfo simulator = m_modelSetSimulator.get();
if (!simulator.isSingleSimulator()) { return CAircraftModelList(); }
CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator);
return CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator); return CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator);
} }
@@ -191,7 +194,7 @@ namespace BlackCore
if (this->isSimulatorAvailable()) { return; } if (this->isSimulatorAvailable()) { return; }
m_modelSetSimulator.set(simulator); m_modelSetSimulator.set(simulator);
const CAircraftModelList models = this->getModelSet(); const CAircraftModelList models = this->getModelSet();
m_aircraftMatcher.setModelSet(models, simulator); m_aircraftMatcher.setModelSet(models, simulator, false);
} }
CSimulatorInfo CContextSimulator::simulatorsWithInitializedModelSet() const CSimulatorInfo CContextSimulator::simulatorsWithInitializedModelSet() const
@@ -375,7 +378,7 @@ namespace BlackCore
m_modelSetSimulator.set(simInfo); m_modelSetSimulator.set(simInfo);
const CAircraftModelList modelSetModels = this->getModelSet(); const CAircraftModelList modelSetModels = this->getModelSet();
m_aircraftMatcher.setModelSet(modelSetModels, simInfo); m_aircraftMatcher.setModelSet(modelSetModels, simInfo, true);
m_aircraftMatcher.setDefaultModel(simulator->getDefaultModel()); m_aircraftMatcher.setDefaultModel(simulator->getDefaultModel());
bool c = connect(simulator, &ISimulator::simulatorStatusChanged, this, &CContextSimulator::onSimulatorStatusChanged); bool c = connect(simulator, &ISimulator::simulatorStatusChanged, this, &CContextSimulator::onSimulatorStatusChanged);
@@ -907,7 +910,7 @@ namespace BlackCore
CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator); CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator);
const CAircraftModelList models(this->getModelSet()); const CAircraftModelList models(this->getModelSet());
CLogMessage(this).info("Init aircraft matcher with %1 models from set for '%2'") << models.size() << simulator.toQString(); CLogMessage(this).info("Init aircraft matcher with %1 models from set for '%2'") << models.size() << simulator.toQString();
m_aircraftMatcher.setModelSet(models, simulator); m_aircraftMatcher.setModelSet(models, simulator, false);
} }
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -96,7 +96,7 @@ namespace BlackGui
{ {
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
const CAircraftModelList models = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator); const CAircraftModelList models = CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().getCachedModels(simulator);
m_matcher.setModelSet(models, simulator); m_matcher.setModelSet(models, simulator, true);
this->redisplay(); this->redisplay();
} }