Jan Kiszka wrote: > malc wrote: >> Does following help? >> >> diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c >> index 28c245d..9cc1372 100644 >> --- a/audio/alsaaudio.c >> +++ b/audio/alsaaudio.c >> @@ -37,6 +37,7 @@ struct pollhlp { >> snd_pcm_t *handle; >> struct pollfd *pfds; >> int count; >> + int mask; >> }; >> >> typedef struct ALSAVoiceOut { >> @@ -178,7 +179,7 @@ static void alsa_poll_handler (void *opaque) >> return; >> } >> >> - if (!(revents & POLLOUT)) { >> + if (!(revents & hlp->mask)) { >> if (conf.verbose) { >> dolog ("revents = %d\n", revents); >> } >> @@ -208,7 +209,7 @@ static void alsa_poll_handler (void *opaque) >> } >> } >> >> -static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp) >> +static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp, int mask) >> { >> int i, count, err; >> struct pollfd *pfds; >> @@ -265,6 +266,7 @@ static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp) >> hlp->pfds = pfds; >> hlp->count = count; >> hlp->handle = handle; >> + hlp->mask = mask; >> return 0; >> } >> >> @@ -272,14 +274,14 @@ static int alsa_poll_out (HWVoiceOut *hw) >> { >> ALSAVoiceOut *alsa = (ALSAVoiceOut *) hw; >> >> - return alsa_poll_helper (alsa->handle, &alsa->pollhlp); >> + return alsa_poll_helper (alsa->handle, &alsa->pollhlp, POLLOUT); >> } >> >> static int alsa_poll_in (HWVoiceIn *hw) >> { >> ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw; >> >> - return alsa_poll_helper (alsa->handle, &alsa->pollhlp); >> + return alsa_poll_helper (alsa->handle, &alsa->pollhlp, POLLIN); >> } >> >> static int alsa_write (SWVoiceOut *sw, void *buf, int len) >> >> > > Nope, still full CPU load. Forgot to mention: I also tried OSS before, but it suffered the same way, and polling had to be disabled. Jan