1
1
#include " selfdrive/ui/replay/replay.h"
2
2
3
+ #include < csignal>
3
4
#include < iostream>
4
5
#include < termios.h>
5
6
10
11
11
12
const QString DEMO_ROUTE = " 4cf7a6ad03080c90|2021-09-29--13-46-36" ;
12
13
14
+ struct termios oldt = {};
15
+
16
+ void sigHandler (int s) {
17
+ std::signal (s, SIG_DFL);
18
+ tcsetattr (STDIN_FILENO, TCSANOW, &oldt);
19
+ qApp->quit ();
20
+ }
21
+
13
22
int getch () {
14
23
int ch;
15
- struct termios oldt;
16
24
struct termios newt;
17
25
18
26
tcgetattr (STDIN_FILENO, &oldt);
@@ -63,7 +71,9 @@ void keyboardThread(Replay *replay) {
63
71
}
64
72
65
73
int main (int argc, char *argv[]){
66
- QApplication a (argc, argv);
74
+ QApplication app (argc, argv);
75
+ std::signal (SIGINT, sigHandler);
76
+ std::signal (SIGTERM, sigHandler);
67
77
68
78
QCommandLineParser parser;
69
79
parser.setApplicationDescription (" Mock openpilot components by publishing logged messages." );
@@ -76,7 +86,7 @@ int main(int argc, char *argv[]){
76
86
parser.addOption ({" dcam" , " load driver camera" });
77
87
parser.addOption ({" ecam" , " load wide road camera" });
78
88
79
- parser.process (a );
89
+ parser.process (app );
80
90
const QStringList args = parser.positionalArguments ();
81
91
if (args.empty () && !parser.isSet (" demo" )) {
82
92
parser.showHelp ();
@@ -86,7 +96,7 @@ int main(int argc, char *argv[]){
86
96
QStringList allow = parser.value (" allow" ).isEmpty () ? QStringList{} : parser.value (" allow" ).split (" ," );
87
97
QStringList block = parser.value (" block" ).isEmpty () ? QStringList{} : parser.value (" block" ).split (" ," );
88
98
89
- Replay *replay = new Replay (route, allow, block, nullptr , parser.isSet (" dcam" ), parser.isSet (" ecam" ));
99
+ Replay *replay = new Replay (route, allow, block, nullptr , parser.isSet (" dcam" ), parser.isSet (" ecam" ), &app );
90
100
if (replay->load ()) {
91
101
replay->start (parser.value (" start" ).toInt ());
92
102
}
@@ -96,5 +106,5 @@ int main(int argc, char *argv[]){
96
106
QObject::connect (t, &QThread::finished, t, &QThread::deleteLater);
97
107
t->start ();
98
108
99
- return a .exec ();
109
+ return app .exec ();
100
110
}
0 commit comments