profile: explicitly update profile items

Instead of listening to the dive-data-model changed and
axis changed signals, update the profile items explicitly
once per plot() call. This avoids double replotting of the
dive items.

The old code had at least two replots per plot() call:
one after profileYAxis()->setMaximum() and one after
dataModel->emitDataChanged().

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-12-29 23:04:12 +01:00 committed by Dirk Hohndel
parent dd0939b6f5
commit 0104b0a915
4 changed files with 5 additions and 12 deletions

View file

@ -735,7 +735,11 @@ void ProfileWidget2::plotDive(const struct dive *d, bool force, bool doClearPict
tankItem->setData(&plotInfo, &displayed_dive);
gasYAxis->update();
dataModel->emitDataChanged();
// Replot dive items
for (AbstractProfilePolygonItem *item: profileItems)
item->replot();
// The event items are a bit special since we don't know how many events are going to
// exist on a dive, so I cant create cache items for that. that's why they are here
// while all other items are up there on the constructor.