X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/5330d674656f13820c3426723f7c03bb54a9ef59..6e2c9f5f8b0b75d89c750dd1a2d8a4fb9d1d3952:/server/speaker.c?ds=sidebyside diff --git a/server/speaker.c b/server/speaker.c index 055b08a..be783af 100644 --- a/server/speaker.c +++ b/server/speaker.c @@ -247,7 +247,7 @@ static int formats_equal(const ao_sample_format *a, static void idle(void) { D(("idle")); #if API_ALSA - if(pcm) { + if(!config->speaker_command && pcm) { int err; if((err = snd_pcm_nonblock(pcm, 0)) < 0) @@ -394,6 +394,8 @@ static int activate(void) { } return 0; } + if(config->speaker_command) + return -1; #if API_ALSA /* If we need to change format then close the current device. */ if(pcm && !formats_equal(&playing->format, &pcm_format)) @@ -555,7 +557,7 @@ static void play(size_t frames) { else avail_bytes = playing->used; - if(kidfd == -1) { + if(!config->speaker_command) { #if API_ALSA snd_pcm_sframes_t pcm_written_frames; size_t avail_frames; @@ -661,7 +663,6 @@ int main(int argc, char **argv) { #endif set_progname(argv); - mem_init(0); if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale"); while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) { switch(n) { @@ -715,9 +716,10 @@ int main(int argc, char **argv) { alsa_slots = -1; kid_slot = -1; if(ready && !forceplay) { - if(kidfd >= 0) - kid_slot = addfd(kidfd, POLLOUT); - else { + if(config->speaker_command) { + if(kidfd >= 0) + kid_slot = addfd(kidfd, POLLOUT); + } else { #if API_ALSA int retry = 3;