summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joakim Bygdell <j.bygdell@gmail.com>2017-01-16 21:52:39 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-01-21 06:07:31 -0800
commitdd2791fa1e940eef32cc4969317d68b7d9abb242 (patch)
tree11cefd24db0e41f79204266220f5b3aa157f61db
parentf7cecf506f8e2ec117fab0bdca978ff86575afcf (diff)
downloadsubsurface-dd2791fa1e940eef32cc4969317d68b7d9abb242.tar.gz
Fix tankbar offset at gas switch event
When painting the tankbar the function triggers on change in cylinder index, as a result the new gascolour are changed at the next sample time point. On a divecomputer with a reasonable fast sample rate the 2-3s offset are hardly noticable, especially on a longer dive. For divecomputers with slow sample rate the 10-30s offset are clearly visible. This is fixed by start painting the new gascolour at the time point of the switch event rather than the time point of the next sample. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
-rw-r--r--profile-widget/tankitem.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/profile-widget/tankitem.cpp b/profile-widget/tankitem.cpp
index e4663b8f9..98655c4fa 100644
--- a/profile-widget/tankitem.cpp
+++ b/profile-widget/tankitem.cpp
@@ -93,6 +93,7 @@ void TankItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &b
// walk the list and figure out which tanks go where
struct plot_data *entry = pInfoEntry;
+ struct plot_data *lastentry = pInfoEntry;
int cylIdx = entry->cylinderindex;
int i = -1;
int startTime = 0;
@@ -100,14 +101,15 @@ void TankItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &b
qreal width, left;
while (++i < pInfoNr) {
entry = &pInfoEntry[i];
+ lastentry = &pInfoEntry[i-1];
if (entry->cylinderindex == cylIdx)
continue;
- width = hAxis->posAtValue(entry->sec) - hAxis->posAtValue(startTime);
+ width = hAxis->posAtValue(lastentry->sec) - hAxis->posAtValue(startTime);
left = hAxis->posAtValue(startTime);
createBar(left, width, gas);
cylIdx = entry->cylinderindex;
gas = &diveCylinderStore.cylinder[cylIdx].gasmix;
- startTime = entry->sec;
+ startTime = lastentry->sec;
}
width = hAxis->posAtValue(entry->sec) - hAxis->posAtValue(startTime);
left = hAxis->posAtValue(startTime);