cabana: fix segfault when switching DBC files. (#28587)

This commit is contained in:
Dean Lee
2023-06-18 03:30:17 +08:00
committed by GitHub
parent b2295c979e
commit 2ebd7ab088
3 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -402,7 +402,7 @@ void ChartsWidget::removeAll() {
if (!charts.isEmpty()) {
for (auto c : charts) {
c->deleteLater();
delete c;
}
charts.clear();
updateToolBar();
+7 -1
View File
@@ -528,7 +528,7 @@ SignalView::SignalView(ChartsWidget *charts, QWidget *parent) : charts(charts),
QObject::connect(tree, &QTreeView::entered, [this](const QModelIndex &index) { emit highlight(model->getItem(index)->sig); });
QObject::connect(model, &QAbstractItemModel::modelReset, this, &SignalView::rowsChanged);
QObject::connect(model, &QAbstractItemModel::rowsRemoved, this, &SignalView::rowsChanged);
QObject::connect(dbc(), &DBCManager::signalAdded, [this](MessageId id, const cabana::Signal *sig) { selectSignal(sig); });
QObject::connect(dbc(), &DBCManager::signalAdded, this, &SignalView::handleSignalAdded);
QObject::connect(dbc(), &DBCManager::signalUpdated, this, &SignalView::handleSignalUpdated);
QObject::connect(tree->verticalScrollBar(), &QScrollBar::valueChanged, [this]() { updateState(); });
QObject::connect(tree->verticalScrollBar(), &QScrollBar::rangeChanged, [this]() { updateState(); });
@@ -632,6 +632,12 @@ void SignalView::setSparklineRange(int value) {
updateState();
}
void SignalView::handleSignalAdded(MessageId id, const cabana::Signal *sig) {
if (id.address == model->msg_id.address) {
selectSignal(sig);
}
}
void SignalView::handleSignalUpdated(const cabana::Signal *sig) {
if (int row = model->signalRow(sig); row != -1) {
auto item = model->getItem(model->index(row, 1));
+1
View File
@@ -116,6 +116,7 @@ private:
void resizeEvent(QResizeEvent* event) override;
void updateToolBar();
void setSparklineRange(int value);
void handleSignalAdded(MessageId id, const cabana::Signal *sig);
void handleSignalUpdated(const cabana::Signal *sig);
void updateState(const QHash<MessageId, CanData> *msgs = nullptr);