make soundd exit cleanly (#22794)

old-commit-hash: 1289ebe9bd
commatwo_master
Willem Melching 4 years ago committed by GitHub
parent 9e64a5a70f
commit ef6ae61c5e
  1. 2
      selfdrive/manager/test/test_manager.py
  2. 2
      selfdrive/ui/SConscript
  3. 9
      selfdrive/ui/soundd.cc

@ -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

@ -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)

@ -6,6 +6,7 @@
#include <QString>
#include <QSoundEffect>
#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();
}

Loading…
Cancel
Save