chiark / gitweb /
Cleaner subprocess shutdow in trackdb_deinit().
[disorder] / server / state.c
index bd74b149f2fb977c22461243ddf201af38cfc3fe..bb36ee44f2d13d99919986c1dc8cb59fda2cf99e 100644 (file)
@@ -49,7 +49,23 @@ void quit(ev_source *ev) {
   info("shutting down...");
   quitting(ev);
   trackdb_close();
-  trackdb_deinit();
+  trackdb_deinit(ev);
+  /* Shutdown subprocesses.
+   *
+   * Subprocesses that use ev_child:
+   * - the speaker
+   * - the current rescan
+   * - any decoders
+   * - ...and players
+   * - the track picker
+   * - mail sender
+   * - the deadlock manager
+   *
+   * Subprocesses that don't:
+   * - any normalizers
+   * These are not shut down currently.
+   */
+  ev_child_killall(ev);
   info("exiting");
   exit(0);
 }