diff --git a/src/blackcore/db/databaseutils.cpp b/src/blackcore/db/databaseutils.cpp index 178e8746b..5e4ba1d3c 100644 --- a/src/blackcore/db/databaseutils.cpp +++ b/src/blackcore/db/databaseutils.cpp @@ -76,6 +76,11 @@ namespace BlackCore } int CDatabaseUtils::consolidateModelsWithDbData(CAircraftModelList &models, bool force) + { + return CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, force, false); + } + + int CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(CAircraftModelList &models, bool force, bool processEvents) { QTime timer; timer.start(); @@ -83,10 +88,17 @@ namespace BlackCore if (models.isEmpty()) { return c; } for (CAircraftModel &model : models) { - if (!force && model.hasValidDbKey()) { continue; } + if (!force && model.isLoadedFromDb()) { continue; } bool modified = false; model = CDatabaseUtils::consolidateModelWithDbData(model, force, &modified); - if (modified || model.hasValidDbKey()) { c++; } + if (modified || model.hasValidDbKey()) + { + c++; + if (processEvents && c % 125 == 0) + { + sApp->processEventsFor(25); + } + } } CLogMessage().debug() << "Consolidated " << models.size() << " in " << timer.elapsed() << "ms"; return c; diff --git a/src/blackcore/db/databaseutils.h b/src/blackcore/db/databaseutils.h index 580a292fc..2cf465487 100644 --- a/src/blackcore/db/databaseutils.h +++ b/src/blackcore/db/databaseutils.h @@ -35,6 +35,9 @@ namespace BlackCore //! Consolidate models with DB data static int consolidateModelsWithDbData(BlackMisc::Simulation::CAircraftModelList &models, bool force); + //! Consolidate models with DB data + static int consolidateModelsWithDbDataAllowsGuiRefresh(BlackMisc::Simulation::CAircraftModelList &models, bool force, bool processEvents); + //! Consolidate models with DB data (simpler/faster version of CAircraftModel::consolidateModelWithDbData) static int consolidateModelsWithDbModelAndDistributor(BlackMisc::Simulation::CAircraftModelList &models, bool force); diff --git a/src/blackgui/menus/aircraftmodelmenus.cpp b/src/blackgui/menus/aircraftmodelmenus.cpp index 60a3f7369..9fd9c151b 100644 --- a/src/blackgui/menus/aircraftmodelmenus.cpp +++ b/src/blackgui/menus/aircraftmodelmenus.cpp @@ -171,7 +171,7 @@ namespace BlackGui const int modelSize = models.size(); const bool filtered = unfilteredSize > modelSize; - int c = CDatabaseUtils::consolidateModelsWithDbData(models, true); + int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true); if (c > 0 && this->modelsTargetSetable() && this->modelsTargetUpdatable()) { if (filtered) @@ -204,7 +204,7 @@ namespace BlackGui CLogMessage().warning("No updatable target"); return; } - int c = CDatabaseUtils::consolidateModelsWithDbData(models, true); + int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true); if (c > 0 && this->modelsTargetUpdatable()) { this->modelsTargetUpdatable()->updateModels(models);