replay: fix segfault or hanging on quit (#23323)

pull/23327/head
Dean Lee 3 years ago committed by GitHub
parent 699b20ed44
commit c9da1403bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      selfdrive/ui/replay/main.cc
  2. 4
      selfdrive/ui/replay/replay.cc
  3. 1
      selfdrive/ui/replay/replay.h

@ -11,16 +11,12 @@
const QString DEMO_ROUTE = "4cf7a6ad03080c90|2021-09-29--13-46-36"; const QString DEMO_ROUTE = "4cf7a6ad03080c90|2021-09-29--13-46-36";
struct termios oldt = {}; struct termios oldt = {};
Replay *replay = nullptr;
void sigHandler(int s) { void sigHandler(int s) {
std::signal(s, SIG_DFL); std::signal(s, SIG_DFL);
if (oldt.c_lflag) { if (oldt.c_lflag) {
tcsetattr(STDIN_FILENO, TCSANOW, &oldt); tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
} }
if (replay) {
replay->stop();
}
qApp->quit(); qApp->quit();
} }
@ -134,7 +130,7 @@ int main(int argc, char *argv[]) {
replay_flags |= flag; replay_flags |= flag;
} }
} }
replay = new Replay(route, allow, block, nullptr, replay_flags, parser.value("data_dir"), &app); Replay *replay = new Replay(route, allow, block, nullptr, replay_flags, parser.value("data_dir"), &app);
if (!replay->load()) { if (!replay->load()) {
return 0; return 0;
} }

@ -36,10 +36,6 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s
} }
Replay::~Replay() { Replay::~Replay() {
stop();
}
void Replay::stop() {
if (!stream_thread_ && segments_.empty()) return; if (!stream_thread_ && segments_.empty()) return;
qDebug() << "shutdown: in progress..."; qDebug() << "shutdown: in progress...";

@ -28,7 +28,6 @@ public:
~Replay(); ~Replay();
bool load(); bool load();
void start(int seconds = 0); void start(int seconds = 0);
void stop();
void pause(bool pause); void pause(bool pause);
bool isPaused() const { return paused_; } bool isPaused() const { return paused_; }

Loading…
Cancel
Save