diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index b1768fcdce8019..5fda6b04870f6c 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -65,7 +65,9 @@ void ReplayStream::start() { } void ReplayStream::stop() { - replay.reset(nullptr); + if (replay) { + replay->stop(); + } } bool ReplayStream::eventFilter(const Event *event) { diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index f477e327ee643b..8616437188afa0 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -46,11 +46,15 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s } Replay::~Replay() { + stop(); +} + +void Replay::stop() { if (!stream_thread_ && segments_.empty()) return; rInfo("shutdown: in progress..."); if (stream_thread_ != nullptr) { - exit_ =true; + exit_ = true; paused_ = true; stream_cv_.notify_one(); stream_thread_->quit(); diff --git a/tools/replay/replay.h b/tools/replay/replay.h index e3f321e1d71596..4adbc14df8558d 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -54,6 +54,7 @@ class Replay : public QObject { ~Replay(); bool load(); void start(int seconds = 0); + void stop(); void pause(bool pause); void seekToFlag(FindFlag flag); void seekTo(double seconds, bool relative);