From d7adee9766909f40e2d534274635b15e75e3737b Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 8 May 2023 07:48:21 +0800 Subject: [PATCH] cabana: clear all cached values in chart after changing signal properties in live mode (#28125) --- tools/cabana/chart/chart.cc | 4 ++-- tools/cabana/chart/chart.h | 2 +- tools/cabana/chart/chartswidget.cc | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc index 1d61d543dd..7840ffd673 100644 --- a/tools/cabana/chart/chart.cc +++ b/tools/cabana/chart/chart.cc @@ -259,10 +259,10 @@ void ChartView::updateSeriesPoints() { } } -void ChartView::updateSeries(const cabana::Signal *sig) { +void ChartView::updateSeries(const cabana::Signal *sig, bool clear) { for (auto &s : sigs) { if (!sig || s.sig == sig) { - if (!can->liveStreaming()) { + if (clear) { s.vals.clear(); s.step_vals.clear(); s.last_value_mono_time = 0; diff --git a/tools/cabana/chart/chart.h b/tools/cabana/chart/chart.h index 4170da4c95..3bb191e5cd 100644 --- a/tools/cabana/chart/chart.h +++ b/tools/cabana/chart/chart.h @@ -27,7 +27,7 @@ public: ChartView(const std::pair &x_range, ChartsWidget *parent = nullptr); void addSignal(const MessageId &msg_id, const cabana::Signal *sig); bool hasSignal(const MessageId &msg_id, const cabana::Signal *sig) const; - void updateSeries(const cabana::Signal *sig = nullptr); + void updateSeries(const cabana::Signal *sig = nullptr, bool clear = true); void updatePlot(double cur, double min, double max); void setSeriesType(SeriesType type); void updatePlotArea(int left, bool force = false); diff --git a/tools/cabana/chart/chartswidget.cc b/tools/cabana/chart/chartswidget.cc index 3a735e2978..d244b0c6cc 100644 --- a/tools/cabana/chart/chartswidget.cc +++ b/tools/cabana/chart/chartswidget.cc @@ -149,8 +149,9 @@ void ChartsWidget::updateTabBar() { void ChartsWidget::eventsMerged() { QFutureSynchronizer future_synchronizer; + bool clear = !can->liveStreaming(); for (auto c : charts) { - future_synchronizer.addFuture(QtConcurrent::run(c, &ChartView::updateSeries, nullptr)); + future_synchronizer.addFuture(QtConcurrent::run(c, &ChartView::updateSeries, nullptr, clear)); } }