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);
}
}
/** @brief Reconfigure the server
+ * @param ev Event loop
* @param flags Flags
* @return As config_read(); 0 on success, -1 if could not (re-)read config
*/