From c95ca5a1d5f46a73b2ee39d620573b5d0e68ba59 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 14 Mar 2023 01:25:16 +0800 Subject: [PATCH] cabana: fix hang on scrubbing in zommed chart (#27568) old-commit-hash: d09a9a08fc21edc03edeb40e1080d8495a7d2915 --- tools/cabana/chartswidget.cc | 10 ++++++---- tools/cabana/streams/abstractstream.cc | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/cabana/chartswidget.cc b/tools/cabana/chartswidget.cc index c0432d0c09..f9661046c8 100644 --- a/tools/cabana/chartswidget.cc +++ b/tools/cabana/chartswidget.cc @@ -723,10 +723,12 @@ void ChartView::mouseReleaseEvent(QMouseEvent *event) { void ChartView::mouseMoveEvent(QMouseEvent *ev) { // Scrubbing if (is_scrubbing && QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier)) { - double t = chart()->mapToValue({(double)ev->x(), (double)ev->y()}).x(); - // Prevent seeking past the end of the route - t = std::clamp(t, 0., can->totalSeconds()); - can->seekTo(t); + if (chart()->plotArea().contains(ev->pos())) { + double t = chart()->mapToValue(ev->pos()).x(); + // Prevent seeking past the end of the route + t = std::clamp(t, 0., can->totalSeconds()); + can->seekTo(t); + } return; } diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index 6af831a1d0..40e9cbc8a5 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -1,5 +1,5 @@ #include "tools/cabana/streams/abstractstream.h" - +#include #include AbstractStream *can = nullptr; @@ -115,6 +115,8 @@ void AbstractStream::updateLastMsgsTo(double sec) { m.value().freq = m.value().count / std::max(1.0, m.value().ts); } } - emit updated(); - emit msgsReceived(&can_msgs); + QTimer::singleShot(0, [this]() { + emit updated(); + emit msgsReceived(&can_msgs); + }); }