aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-08-12 18:43:21 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-08-22 10:13:40 -0700
commite6cd4f8ae5d8b0bbc8e517b88d4ddc6045657227 (patch)
tree184d25a97a284127803f6e2792b8b5a3a4280014
parentf25fa2adc5dd37aca17335d8278fd00e39e9b733 (diff)
downloadsubsurface-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.cpp15
-rw-r--r--core/subsurface-qt/DiveObjectHelper.h1
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 *)