diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-08-12 18:43:21 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-08-22 10:13:40 -0700 |
commit | e6cd4f8ae5d8b0bbc8e517b88d4ddc6045657227 (patch) | |
tree | 184d25a97a284127803f6e2792b8b5a3a4280014 | |
parent | f25fa2adc5dd37aca17335d8278fd00e39e9b733 (diff) | |
download | subsurface-e6cd4f8ae5d8b0bbc8e517b88d4ddc6045657227.tar.gz |
Grantlee: generate vector of cylinder data on-demand
Instead of generating cylinder data in the form of
CylinderObjectHelper objects for every DiveObjectHelper,
generate it only if needed. DiveObjectHelper is used extensively
in the mobile interface, which doesn't use the cylinder data.
Let's not generate unnecessary CylinderObjectHelpers in this
case!
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.cpp | 15 | ||||
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.h | 1 |
2 files changed, 7 insertions, 9 deletions
diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp index ec4c8d65f..0af3e432e 100644 --- a/core/subsurface-qt/DiveObjectHelper.cpp +++ b/core/subsurface-qt/DiveObjectHelper.cpp @@ -58,13 +58,6 @@ static QString getPressures(struct dive *dive, int i, enum returnPressureSelecto DiveObjectHelper::DiveObjectHelper(struct dive *d) : m_dive(d) { - if (!m_dive) - qWarning("Creating DiveObjectHelper from NULL dive"); - for (int i = 0; i < MAX_CYLINDERS; i++) { - //Don't add blank cylinders, only those that have been defined. - if (m_dive->cylinder[i].type.description) - m_cyls.append(CylinderObjectHelper(&m_dive->cylinder[i])); - } } int DiveObjectHelper::number() const @@ -311,7 +304,13 @@ QString DiveObjectHelper::cylinder(int idx) const QVector<CylinderObjectHelper> DiveObjectHelper::cylinderObjects() const { - return m_cyls; + QVector<CylinderObjectHelper> res; + for (int i = 0; i < MAX_CYLINDERS; i++) { + //Don't add blank cylinders, only those that have been defined. + if (m_dive->cylinder[i].type.description) + res.append(CylinderObjectHelper(&m_dive->cylinder[i])); // no emplace for QVector. :( + } + return res; } QString DiveObjectHelper::tripId() const diff --git a/core/subsurface-qt/DiveObjectHelper.h b/core/subsurface-qt/DiveObjectHelper.h index a090811de..49eb1d8a6 100644 --- a/core/subsurface-qt/DiveObjectHelper.h +++ b/core/subsurface-qt/DiveObjectHelper.h @@ -99,7 +99,6 @@ public: private: struct dive *m_dive; - QVector<CylinderObjectHelper> m_cyls; }; Q_DECLARE_METATYPE(DiveObjectHelper *) |