X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/dc450d306ec47916c28a11b84d9757f0e1921460..a684c959cadb4166c695f70cc4aa3a8f5603b67c:/server/speaker.c?ds=sidebyside diff --git a/server/speaker.c b/server/speaker.c index 2c742f7..41a12e5 100644 --- a/server/speaker.c +++ b/server/speaker.c @@ -372,11 +372,17 @@ int addfd(int fd, int events) { /** @brief Table of speaker backends */ static const struct speaker_backend *backends[] = { -#if API_ALSA +#if HAVE_ALSA_ASOUNDLIB_H &alsa_backend, #endif &command_backend, &network_backend, +#if HAVE_COREAUDIO_AUDIOHARDWARE_H + &coreaudio_backend, +#endif +#if HAVE_SYS_SOUNDCARD_H + &oss_backend, +#endif 0 }; @@ -470,6 +476,7 @@ static void mainloop(void) { char id[24]; if((fd = accept(listenfd, (struct sockaddr *)&addr, &addrlen)) >= 0) { + blocking(fd); if(read(fd, &l, sizeof l) < 4) { error(errno, "reading length from inbound connection"); xclose(fd); @@ -578,6 +585,7 @@ int main(int argc, char **argv) { int n; struct sockaddr_un addr; static const int one = 1; + struct speaker_message sm; set_progname(argv); if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale"); @@ -632,6 +640,9 @@ int main(int argc, char **argv) { xlisten(listenfd, 128); nonblock(listenfd); info("listening on %s", addr.sun_path); + memset(&sm, 0, sizeof sm); + sm.type = SM_READY; + speaker_send(1, &sm); mainloop(); info("stopped (parent terminated)"); exit(0);