alsa: Use proper value when testing returned events in alsa_poll_handler

Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
malc 2009-09-14 03:53:25 +04:00
parent 6ebfda13a6
commit b4f763b86d
1 changed files with 6 additions and 4 deletions

View File

@ -37,6 +37,7 @@ struct pollhlp {
snd_pcm_t *handle; snd_pcm_t *handle;
struct pollfd *pfds; struct pollfd *pfds;
int count; int count;
int mask;
}; };
typedef struct ALSAVoiceOut { typedef struct ALSAVoiceOut {
@ -200,7 +201,7 @@ static void alsa_poll_handler (void *opaque)
return; return;
} }
if (!(revents & POLLOUT)) { if (!(revents & hlp->mask)) {
if (conf.verbose) { if (conf.verbose) {
dolog ("revents = %d\n", revents); dolog ("revents = %d\n", revents);
} }
@ -230,7 +231,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; int i, count, err;
struct pollfd *pfds; struct pollfd *pfds;
@ -287,6 +288,7 @@ static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp)
hlp->pfds = pfds; hlp->pfds = pfds;
hlp->count = count; hlp->count = count;
hlp->handle = handle; hlp->handle = handle;
hlp->mask = mask;
return 0; return 0;
} }
@ -294,14 +296,14 @@ static int alsa_poll_out (HWVoiceOut *hw)
{ {
ALSAVoiceOut *alsa = (ALSAVoiceOut *) 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) static int alsa_poll_in (HWVoiceIn *hw)
{ {
ALSAVoiceIn *alsa = (ALSAVoiceIn *) 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) static int alsa_write (SWVoiceOut *sw, void *buf, int len)