mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-15 01:54:14 +02:00
Merge pull request #1471 from ispyisail/fix/lazy-refused-opens-eager
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Linux build and tests / Build and test (Qt 6, Debug) (push) Failing after 1m41s
Fix lazy folios opening older projects slower than without them
This commit is contained in:
+18
-7
@@ -559,7 +559,7 @@ QETProject::ProjectState QETProject::state() const
|
||||
QList<Diagram *> QETProject::diagrams() const
|
||||
{
|
||||
//Every caller of diagrams() expects every folio built: those that
|
||||
//do not are moved to folios() one by one (LAZY-FOLIO-PLAN.md)
|
||||
//do not are moved to folios() one by one
|
||||
loadFolios();
|
||||
return(m_diagrams_list);
|
||||
}
|
||||
@@ -2306,8 +2306,7 @@ QDomDocument QETProject::toXml(QHash<int, QByteArray> *kept_folios)
|
||||
loadFolios();
|
||||
}
|
||||
//QET_CHECK_ELEMENT_INFO_STORE=1: say whether the stores of symbol
|
||||
//information, folio title blocks and wire properties
|
||||
//(DB-ACCESSORS-PLAN.md) agree with every placed symbol, folio and
|
||||
//information, folio title blocks and wire properties agree with every placed symbol, folio and
|
||||
//wire, at each save. A test and debugging aid; it changes nothing.
|
||||
if (qEnvironmentVariableIntValue("QET_CHECK_ELEMENT_INFO_STORE") == 1) {
|
||||
const QStringList mismatches = m_data_base.elementInformationMismatches();
|
||||
@@ -3030,9 +3029,22 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
|
||||
|
||||
//The stores of symbol information, folio title blocks and wire
|
||||
//properties are filled from the document before the folios are
|
||||
//built (DB-ACCESSORS-PLAN.md stage 4.6)
|
||||
//built
|
||||
m_data_base.prefillFromDocument(xml_project);
|
||||
|
||||
//QET_LAZY_FOLIOS leaves the folios to be built when needed only
|
||||
//when the database can be filled from the document: otherwise
|
||||
//filling it from the folios builds every one of them anyway, late
|
||||
//and more slowly than reading them now
|
||||
m_lazy_open = qEnvironmentVariableIntValue("QET_LAZY_FOLIOS") == 1;
|
||||
if (m_lazy_open) {
|
||||
const QString why = projectDataBase::documentRefusal(xml_project);
|
||||
if (!why.isEmpty()) {
|
||||
qInfo().noquote() << "Project opened with every folio built:" << why;
|
||||
m_lazy_open = false;
|
||||
}
|
||||
}
|
||||
|
||||
//Load the diagrams
|
||||
readDiagramsXml(xml_project);
|
||||
const qint64 diagrams_ms = phase_timer.restart();
|
||||
@@ -3072,7 +3084,6 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
|
||||
//number can hold what a save rewrites (tst_freetextnonfinite,
|
||||
//tst_foliofreezeflags): only with QET_LAZY_SAVE_KEPT=1, until a
|
||||
//.qetz, whose manifest names its writer, does it
|
||||
//(QETZ-DB-TRUTH-PLAN.md D4)
|
||||
m_kept_folios_trusted = qEnvironmentVariableIntValue("QET_LAZY_SAVE_KEPT") == 1
|
||||
&& unloadedFolioCount() > 0
|
||||
&& m_project_qet_version == QetVersion::currentVersion()
|
||||
@@ -3149,7 +3160,7 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
|
||||
//Where each line of the file starts, for a folio's text: lines
|
||||
//[its start, the next element's start) (QETProject::toXml())
|
||||
QList<qsizetype> line_starts;
|
||||
if (qEnvironmentVariableIntValue("QET_LAZY_FOLIOS") == 1 && !m_opened_content.isEmpty()) {
|
||||
if (m_lazy_open && !m_opened_content.isEmpty()) {
|
||||
line_starts << 0;
|
||||
for (qsizetype i = 0 ; i < m_opened_content.size() ; ++i)
|
||||
if (m_opened_content.at(i) == '\n') line_starts << i + 1;
|
||||
@@ -3196,7 +3207,7 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
|
||||
connect(diagram, &Diagram::usedTitleBlockTemplateChanged,
|
||||
this, &QETProject::usedTitleBlockTemplateChanged);
|
||||
|
||||
m_deferring_folios = qEnvironmentVariableIntValue("QET_LAZY_FOLIOS") == 1;
|
||||
m_deferring_folios = m_lazy_open;
|
||||
diagram->initFromXml(diagram_xml_element);
|
||||
m_deferring_folios = false;
|
||||
if (!diagram->isLoaded() && !line_starts.isEmpty())
|
||||
|
||||
Reference in New Issue
Block a user