diff --git a/selfdrive/manager/test/test_manager.py b/selfdrive/manager/test/test_manager.py index 752ec47dd6..588d72aa28 100755 --- a/selfdrive/manager/test/test_manager.py +++ b/selfdrive/manager/test/test_manager.py @@ -49,7 +49,7 @@ class TestManager(unittest.TestCase): self.assertTrue(state.running, f"{p} not running") exit_code = managed_processes[p].stop(retry=False) - if (p == 'ui') or (EON and p == 'logcatd') or (p == 'soundd'): + if (p == 'ui') or (EON and p == 'logcatd'): # TODO: make Qt UI exit gracefully continue diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 822a0db0d6..943c072a69 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -44,7 +44,7 @@ qt_env.Depends(assets, Glob('#selfdrive/assets/*', exclude=[assets, assets_src, asset_obj = qt_env.Object("assets", assets) # build soundd -qt_env.Program("_soundd", "soundd.cc", LIBS=base_libs) +qt_env.Program("_soundd", "soundd.cc", LIBS=qt_libs) if GetOption('test'): qt_env.Program("tests/playsound", "tests/playsound.cc", LIBS=base_libs) diff --git a/selfdrive/ui/soundd.cc b/selfdrive/ui/soundd.cc index 014ceb2c5e..1ee5f13210 100644 --- a/selfdrive/ui/soundd.cc +++ b/selfdrive/ui/soundd.cc @@ -6,6 +6,7 @@ #include #include +#include "selfdrive/ui/qt/util.h" #include "cereal/messaging/messaging.h" #include "selfdrive/common/util.h" #include "selfdrive/hardware/hw.h" @@ -14,6 +15,10 @@ // TODO: detect when we can't play sounds // TODO: detect when we can't display the UI +void sigHandler(int s) { + qApp->quit(); +} + class Sound : public QObject { public: explicit Sound(QObject *parent = 0) { @@ -100,9 +105,13 @@ private: }; int main(int argc, char **argv) { + qInstallMessageHandler(swagLogMessageHandler); setpriority(PRIO_PROCESS, 0, -20); QApplication a(argc, argv); + std::signal(SIGINT, sigHandler); + std::signal(SIGTERM, sigHandler); + Sound sound; return a.exec(); }