summaryrefslogtreecommitdiffstats
path: root/stats/statsview.h
diff options
context:
space:
mode:
Diffstat (limited to 'stats/statsview.h')
-rw-r--r--stats/statsview.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/stats/statsview.h b/stats/statsview.h
index 3623c01eb..cc497792b 100644
--- a/stats/statsview.h
+++ b/stats/statsview.h
@@ -43,13 +43,14 @@ public:
~StatsView();
void plot(const StatsState &state);
- void updateFeatures(const StatsState &state); // Updates the visibility of chart features, such as legend, regression, etc.
+ void updateFeatures(const StatsState &state); // Updates the visibility of chart features, such as legend, regression, etc.
QQuickWindow *w() const; // Make window available to items
QSizeF size() const;
QRectF plotArea() const;
void addQSGNode(QSGNode *node, ChartZValue z); // Must only be called in render thread!
void registerChartItem(ChartItem &item);
void registerDirtyChartItem(ChartItem &item);
+ void emergencyShutdown(); // Called when QQuick decides to delete out root node.
// Create a chart item and add it to the scene.
// The item must not be deleted by the caller, but can be
@@ -151,6 +152,10 @@ private:
// There are three double linked lists of chart items:
// clean items, dirty items and items to be deleted.
+ // Note that only the render thread must delete chart items,
+ // and therefore these lists are the only owning pointers
+ // to chart items. All other pointers are non-owning and
+ // can therefore become stale.
struct ChartItemList {
ChartItemList();
ChartItem *first, *last;
@@ -161,6 +166,7 @@ private:
};
ChartItemList cleanItems, dirtyItems, deletedItems;
void deleteChartItemInternal(ChartItem &item);
+ void freeDeletedChartItems();
};
// This implementation detail must be known to users of the class.