From 7f23e69cb126941ad736cf100e28fb67f5827f48 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 7 Sep 2023 01:34:15 +0800 Subject: [PATCH] cabana: fix stuck on exit (#29796) fix ctrl+c can't exit when stream dialog displayed on startup --- tools/cabana/cabana.cc | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc index 7d3e6ab99f..33403a2bff 100644 --- a/tools/cabana/cabana.cc +++ b/tools/cabana/cabana.cc @@ -75,12 +75,7 @@ int main(int argc, char *argv[]) { } else if (cmd_parser.isSet("demo")) { route = DEMO_ROUTE; } - - if (route.isEmpty()) { - StreamSelector dlg(&stream); - dlg.exec(); - dbc_file = dlg.dbcFile(); - } else { + if (!route.isEmpty()) { auto replay_stream = new ReplayStream(&app); if (!replay_stream->loadRoute(route, cmd_parser.value("data_dir"), replay_flags)) { return 0; @@ -89,17 +84,28 @@ int main(int argc, char *argv[]) { } } - MainWindow w; - if (!stream) { - stream = new DummyStream(&app); - } - stream->start(); - if (!dbc_file.isEmpty()) { - w.loadFile(dbc_file); + int ret = 0; + { + MainWindow w; + QTimer::singleShot(0, [&]() { + if (!stream) { + StreamSelector dlg(&stream); + dlg.exec(); + dbc_file = dlg.dbcFile(); + } + if (!stream) { + stream = new DummyStream(&app); + } + stream->start(); + if (!dbc_file.isEmpty()) { + w.loadFile(dbc_file); + } + w.show(); + }); + + ret = app.exec(); } - w.show(); - int ret = app.exec(); delete can; return ret; }