summaryrefslogtreecommitdiffstats
path: root/stats/statsview.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-20 23:13:54 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-21 13:42:14 -0800
commit54ff31f5c19f4a6a7408a66e2ad33678896de529 (patch)
tree30695880e48b137635c583392d3740798ccb4aba /stats/statsview.h
parent913bed19bbbd43c5934b6d26d94e3f260a1a76d3 (diff)
downloadsubsurface-54ff31f5c19f4a6a7408a66e2ad33678896de529.tar.gz
statistics: do resizing in UI thread, not render thread
The updatePaintNode() function, which is run on the render thread detected a geometry change and initiated recalculation of the chart layout. This means that plotAreaChanged() was called in two different thread contexts, which is questionable. Instead, hook into the geometryChanged() function and recalculate the chart items there. This fixes a rendering bug, because the old code would first delete unneeded items and then rerender the chart. Thus, old grid and tick items were still visible. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'stats/statsview.h')
-rw-r--r--stats/statsview.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/stats/statsview.h b/stats/statsview.h
index 0af91b382..3623c01eb 100644
--- a/stats/statsview.h
+++ b/stats/statsview.h
@@ -64,12 +64,12 @@ public:
private slots:
void replotIfVisible();
private:
- bool resetChart;
-
// QtQuick related things
+ bool backgroundDirty;
QRectF plotRect;
QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
void plotAreaChanged(const QSizeF &size);
void reset(); // clears all series and axes
void setAxes(StatsAxis *x, StatsAxis *y);